我有一个 Web 服务,每天有 100,000 次点击。它目前运行在 LAMP+memcached 上的 VPS 上。当前配置达到了服务器的 kmemsize 限制。
服务器有大量可用内存,并且不消耗太多 CPU,因此还远远没有耗尽。除了 kmemsize 之外,所有参数都很低。
您建议如何解决此瓶颈。我考虑在服务器端切换到 nginx,并在 php 端安装 apc。您认为这会打开瓶颈吗?还有其他建议吗?
答案1
首先我要检查是否增加这些限制......
...openvz 的 vzXYZ 工具为设置 ovz 容器提供了一个很好的起点。当您使用 vzsplit 为给定硬件节点上的多个容器生成配置时,您将获得一个示例配置,其中所有容器均等地分配了限制。所以从这里开始没问题...
但在生产中,您会遇到几种这些限制无用的情况。因此,需要对它们进行定制,以满足每个容器的需求。监控用户 beancounters 是件好事……
cat /proc/user_beancounters
uid resource held maxheld barrier limit failcnt
1220: kmemsize 18511794 31073180 273694720 277906112 22
lockedpages 0 8 2056 2056 0
privvmpages 204185 258842 605796 666375 0
shmpages 7830 8806 30845 30845 0
增加failcnt
。例如,如果您遇到失败,kmemsize
则可以使用该工具轻松增加限制vzctl
。
vzctl set 1220 --kmemsize 410542080:416859168 --save
深入了解 wikihttp://wiki.openvz.org/UBC_consistency_check。调整限制并不那么痛苦,我甚至发现过度承诺的节点工作没有任何问题。但要小心!
此脚本在设置为 cron-job 时很有用http://github.com/peletiah/openvz/blob/master/check_beancounter.py
答案2
我猜你正在使用 Virtuozzo VPS 或基于 OpenVZ 的 VPS。你可能想切换到基于 Xen 的 VPS 提供商,如 478east,或者让你的主机切换 kmemsize 限制。
我可能不是 100% 正确,所以你可能需要等待其他人的意见。