我在 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)?
- 任何猜测哪个服务最需要资源?
对于这些,默认值通常太低。41MB 对于 kmem 来说相当小,而 shmpages 应该接近 RAM 大小的一半(1/2 vmguarpages)。
UBC 参数有其用途,特别是如果您喜欢可爆 RAM 而不是交换,但参数通常需要调整或有经验的管理员/主机分配适当的限制。
Vswap 一直是 OpenVZ 的默认设置,这使得这些 UBC 限制成为过去。如果您在使用这些 UBC 参数时遇到问题,我建议您考虑切换到 vswap 配置。