Web服务器性能故障排除的build议是必要的

我正在租用一个基于CentOS的虚拟服务器,在那里我有大约5个活动站点在运行。 几个月前,我注意到我的网站正在运行的一个显着的性能下降。

第一个症状是在HTTP服务器停止响应之后运行的(〜300个)apache进程太多。 重新启动后问题消失,但在一天或一周内偶尔出现,等等。 我玩了httpd.config选项,但无法摆脱这个问题,我唯一能find的解决scheme是安排服务器每1小时重新启动一次。 重启很快,所以暂时解决了这个问题。

然而几个月前,我开始观察服务器性能的另一个问题 – 周期性的站点响应速度太慢。

我需要一些build议或帮助来找出问题的根源,因为我现在还不确定我是否明白这一点:

它看起来是足够的内存,这是从顶部的输出:Mem:共524288k,使用299252k,225036k空闲,0k缓冲区

它有足够的磁盘空间(来自“vm -h”):

Filesystem Size Used Avail Use% Mounted on vzfs 40G 28G 13G 70% / none 3.9G 4.0K 3.9G 1% /dev 

这里是关于“vmstat -SM 2 100”资源使用情况的运行时信息:

 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ rb swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 220 0 0 0 0 8 111 0 1 6 4 90 0 0 0 0 0 220 0 0 0 0 0 0 0 272 0 0 100 0 0 0 0 0 220 0 0 0 0 0 0 0 176 0 0 100 0 0 0 0 0 220 0 0 0 0 0 0 0 132 0 0 100 0 0 0 0 0 220 0 0 0 0 0 1950 0 330 0 0 100 0 0 2 0 0 220 0 0 0 0 0 4 0 1854 21 19 60 0 0 2 0 0 210 0 0 0 0 0 4 0 1958 73 23 4 0 0 2 0 0 199 0 0 0 0 0 4 0 829 41 40 19 0 0 1 0 0 207 0 0 0 0 0 26 0 1212 47 17 36 0 0 1 0 0 206 0 0 0 0 0 4 0 1405 50 4 45 0 0 0 0 0 209 0 0 0 0 4 140 0 1251 34 5 60 0 0 0 0 0 208 0 0 0 0 0 0 0 213 1 0 99 0 0 0 0 0 208 0 0 0 0 0 0 0 353 0 0 100 0 0 0 0 0 208 0 0 0 0 0 6 0 317 0 0 100 0 0 0 0 0 206 0 0 0 0 0 0 0 299 0 0 100 0 0 0 0 0 214 0 0 0 0 12 114 0 336 0 1 99 0 0 

顺便说一下,具有高CS(上下文切换值)的线对应于我刷新一对站点页面的时刻。

任何build议是非常感激的。

一般来说,我发现当apache被设置为可以产生比你能处理的更多的孩子时,一旦达到你的系统限制,它就会冻结。 一旦堵塞,资源的释放并不是很好。 所以我build议你先调低一下你最大的孩子(很多)。 看一个孩子通常使用多less内存。 然后把你最​​大的公羊分成多less个孩子,你可以用这个结果作为调整最佳孩子数量的起点。

我的答案可能是有偏见的,但我不觉得Apache是​​一个很好的networking服务器…这是太耗费资源比它需要,因此尤其是一个小的环境,如你正在运行的VPS 。 尝试像nginx(如果你使用php例如php-fpm)或清漆等替代品。这些不是1对1replace的Apache,但他们是Web服务器,我发现更有效率和更less容易因资源问题而冻结。

此外,在发布这样的问题时,我build议你从top事情发布统计信息,因为在高峰/麻烦的时候,它们提供了更全面的图片,虽然一般。