这是我第一次configurationVPS服务器,我遇到了一些问题。 我们正在为每个互联网configuration的1GB Centos服务器上运行Wordpress(在线研究)。 没有自定义查询或任何疯狂的,但在8K职位closures。 在任意的时间间隔,服务器就会closures。 从客户端,它只是说“加载…”,将无限期地旋转或多或less。 在服务器端,shell将完全locking。 我们必须从控制面板重新启动,然后一切都很好。
看“顶”,我发现它通常在35-55%的内存使用率之间徘徊,偶尔会高达80%左右。 当我看到它下降的时候,大约有30-40个阿帕奇进程显示了哪个内存在边缘。 “error_log”告诉我在每个重启实例之前都已经达到了maxclients。 我已经尝试过修补,但无济于事。
我想我们可能需要将服务器提升到下一个内存级别,但是每月大约有120K的综合浏览量,这似乎有点矫枉过正,因为它之前在共享服务器上运行得相当好。
有任何想法吗? httpd.conf和my.cnf的值添加? 如果有帮助的话,我会用最新的更新。
提前致谢! 这是一个有趣和重要的学习经验,但总体来说,相当令人沮丧!
编辑:快速顶部快照:
top - 15:18:15 up 2 days, 13:04, 1 user, load average: 0.56, 0.44, 0.38 Tasks: 85 total, 2 running, 83 sleeping, 0 stopped, 0 zombie Cpu(s): 6.7%us, 3.5%sy, 0.0%ni, 89.6%id, 0.0%wa, 0.0%hi, 0.1%si, 0.0%st Mem: 2051088k total, 736708k used, 1314380k free, 199576k buffers Swap: 4194300k total, 0k used, 4194300k free, 287688k cached
如果你的服务器不能处理30-40个httpd进程(不能),那就不要这样做。 在回答这个问题时 , 我详细地介绍了LAMPconfiguration。 我给出的例子是一个512 MiB的VPS,所以不要盲目复制configuration“每一个互联网”。 🙂
短版本:缩减您的httpd MaxClients和ServerLimitvariables,以防止30多个httpd进程转起来。 我会从10或15开始,具体取决于进程的平均大小,以及您给MySQL提供了多less空间。 请注意,httpd的行为将是当所有客户端进程繁忙时拒绝请求。
检查是否在locking发生时使用任何交换内存(free和vmstat)。 如果您将MaxClients设置得太高,stream量高峰期间会发生什么情况是内存使用情况,服务器负载将缓慢增加,直到您用完内存并开始使用交换。 这导致Apache客户端开始加载/从交换内存,这只会杀死性能,服务器加载天空火箭和服务器“locking”。
理想情况下,您希望将MaxClients设置为永远不会开始使用交换内存。 确切的数额将取决于你的Apache设置和你正在服务。 由于您在stream量峰值期间看到了30-40个进程,因此我将从大约30开始,看看是否能防止交换使用(假设这是问题的根源)。
它看起来像你的系统是颠簸 。
要debugging它,我首先禁用交换。 通过这种方式,你将会失去内存错误,而不是因为不断的换入和移出内存页面而导致的死锁。 那么你会更容易看到是什么原因造成你的麻烦。
我也会:
这会迫使你的Apache不要使用超过700MB的内存(httpd为10 * 64 +内存)。 如果一个脚本需要更多的内存,它只会失败,不会打倒你的服务器。
当你发现是什么导致你的麻烦,那么你可以启用交换。 但不超过你的RAM的四分之一。 这种方式未使用的内存可以换出,但不足以导致颠簸。