我在 OpenVZ (Virtuozzo) 容器内运行 Ubuntu 14.04 LTS。其中运行了一些基本服务(Apache、Postfix、Dovecot、MariaDB、OpenVPN、LDAP、memcached、php-fpm、nscd),我已经达到了一些限制,如 所示/proc/user_beancounters
,尤其是 kmemsize:
Version: 2.5
uid resource held maxheld barrier limit failcnt
79053013: kmemsize 39057604 41549824 41943040 50331648 18
这仅仅是在正常运行时间仅 12 小时之后发生的;之前 kmemsize、shmpages、tcpsndbuf 出现大量(数百个)故障。
我的问题是:
- 是否有可能某些服务泄漏资源(即使我重新启动它们也不会释放),或者即使没有泄漏,资源使用量也会随着时间的推移而增加?
- 我如何才能更细致地了解受限资源的使用情况,以便知道该调整什么?
- 有没有什么技巧/链接可以降低这些问题(特别是 kmemsize、shmpages)?
- 猜猜哪个服务最耗费资源?
答案1
默认值通常太低。41MB 对于 kmem 来说相当小,而 shmpages 应该接近 RAM 大小的一半(1/2 vmguarpages)。
UBC 参数有其用途,特别是如果您喜欢可突发 RAM 而不是交换,但参数通常需要调整或由经验丰富的管理员/主机分配适当的限制。
Vswap 已经成为 OpenVZ 的默认配置一段时间了,这使得这些 UBC 限制成为过去。如果您在这些 UBC 参数方面遇到问题,我建议您考虑切换到 vswap 配置。