2013-12-25 14:43:01
来 源
IT技术网
Linux
本文介绍Apache内存优化,希望对于初学Apache服务器相关的朋友有帮助,更多Apache安装、配置、报错处理等资源请本站内搜索。

本文介绍如何根据服务内存或VPS内存来优化Apache httpd进程,合理优化内存占用

01用ROOT账户通过SSH登陆服务器或VPS

02运行top

03按 shift + m.

04注意RES memory占用内存最高的的httpd进程

05按 Q 退出 top

06停止httpd服务:service httpd stop

07httpd停止后,执行: free -m

08注意"used"列使用的内存,就是系统占用的内存。

09确定你的服务器或VPS的实际内存

10从实际内存减去系统内存,就是可用内存

11可用内存乘以0.8,作为Apache的平均可用内存(预留20%作为峰值内存)

12用第11步中的平均可用内存除以第4步中的httpd占用的最高RES memory,作为系统的MaxClients值

13打开 httpd.conf文件

14MaxClients:设置MaxClients为第12步中的值

15Keepalive:如果不需要,设置Keepalive为Off(设置为on可以让服务器处理更多的请求,但是会占用更多内存。如果你没有在第11步中预留20%的峰值内存就不要打开)

16keepalivetimeout:如果你设置keepalive为on, 尽量将keepalivetimeout设置的越低越好,如果你的服务器延迟很高,将keepalivetimeout 设置为2-5秒

17Timeout:将Timeout设置为一个合理的值,原则是不会使客户端请求因为超时而中断连接,又不会使已完成的连接保留太长时间。(如果客户端用宽带上网可设为10-30秒,如果是拨号上网可设为30-120秒)

18MaxKeepAliveRequests:将MaxKeepAliveRequests设置为网页页面中最大的请求数(如图片,css,js文件等)。如果你不知道,可以设置为70-200

19MinSpareServers:将MinSpareServers设置为第14步中MaxClients值的10-25%

20MaxSpareServers:将MaxSpareServers设置为第14步中MaxClients值的25-50%

21StartServers:将StartServers设置为MinSpareServers值或MaxSpareServers值。此值是Apache在服务器启动时开启的进程。流量高的站点应该讲此值设置为MaxSpareServers值,流量低的站点应该讲此值设置为MinSpareServrs值

22MaxRequestsPerChild:将MaxRequestsPerChild设置为500 (如果你发现apache子进程占用的内存快速增长) 到 10000 (如果没有发现有内存泄露)。如果设置为0,那么子进程永远也不会被清除,那么apache占用的所有内存也就不会被回收。

23设置完成后,保存httpd.conf文件,重启apache服务: service httpd restart.

下面是配置实例: 在TOP下看到占用内存最多的apache进程占用了 5mb 内存:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

15535 root 16 0 15072 5376 3196 S 0 0.5 0:17.60 httpd

-bash-3.00# service httpd stop

/etc/init.d/httpd stop: httpd stopped

-bash-3.00# free -m

total used free shared buffers cached

Mem: 1024 131 892 0 0 0

-/+ buffers/cache: 131 892

Swap: 0 0 0

-bash-3.00#

可以看到系统占用了131MB内存。服务器总共有384MB内存可用.

384 - 131 = 253MB 可用内存

253 * 0.8 = 202.4MB Apache内存池

200 / 5 = 40

根据上面的信息,开始设置httpd.conf:

Timeout 10 (如果超过10秒还没打开网页,一定是别的地方出了问题)

MaxClients 40 (注意: 如果有其它进程需要更多内存可以将此值设置的更低)

MinSpareServers 4 (我的站点几乎没有流量)

MaxSpareServers 20 (我的服务器几乎不使用内存,所以apache子进程空闲较多也不会有影响)

StartServers 4 (同样是因为站点流量低,所以在apache启动后不需要开启太多进程)

Keepalive On (因为使用的内存不多,所以尽情开放。)

MaxKeepAliveRequests 100 (虽然我的页面没有100多个对象要传输, 但是设置的过低也不会提示性能,所以我设置为100)

KeepAliveTimeout 1 (我没有很大的文件/页面,我不希望为每个连接保持1秒以上的时间)

MaxRequestsPerChild 10000 (设置为此值可以让我的站点性能更好,因为我的站点没有可能导致内存泄露的PHP程序)

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。