快捷搜索:   nginx

apache内存优化

前阵子总是发现 httpd 进程的使用内存总量居然达到了上百Mb,有时甚至上Gb,真是夸

张。Apache 是架在 Squid 的后面,照理说不应该出现这种情况。通过排查,发现是

Apache 中开启了持续长连接导致。

Apache 进程的内存使用是 "递增/渐进" 式的,也就是在当前进程的 httpd 过程中,内

存使用是持续增加的,也就是说在该进程退出之前,内存是持续增加的。主要是由于下

面三个参数来控制。

KeepAlive On 设定是否要开启持续长连接,由于前面有 Squid,因此在这里把它打开

MaxKeepAliveRequests 50 在一次持续长连接中,最多允许接收几次请求,如果设置太

大的话,很可能导致 httpd
进程持续消耗很多内存,因此可以选择一个适当的值,因为重新创建一个新的进程也是

要有一定开销的

KeepAliveTimeout 5 设定一个长连接在没有活动后等待多久自动关闭,可以设置小一点

,不过跟上面的类似,如果太小的话,也会导致频繁创建新的进程

现在,调整完上面的参数后,会发现 httpd 进程不再象以前那样狂吃内存了。

如果不需要流量日志,那么把 httpd.conf 中的 TransferLog 指向到 /dev/null/除非

你确定使用 .htaccess 来控制一些目录的权限,否则设置 \"AllowOverride

None\" ,这样就免去 Apache 在每个目录搜索 .htaccess 文件的劳役之苦。

不要让不需要的后台进程运行。

千万不要把页面或者日志文件写到网络磁盘上,例如 NFS。

不要让 Apache (httpd) 运行于 inetd 模式。

不要让 X Windows 运行在你的 Web 服务器上,用 Ctrl-Alt-Backspace 关闭 X 。

避免使用 SSI tag。在 CGI 脚本中:

文件 I/O:打开的文件数目越少越好。

Shell 命令:采用全路径来调用 shell 命令。

如果你的网站主要以 CGI 来驱动,那么请使用 mod_perl。

本文简要介绍了几个优化 Apache 的技巧,在实战中十分有用。

升级 Apache 到最新版本,新版本往往包含性能提升和安全更新。
在 httpd.conf 中设置 "HostNameLookups off" 能避免针对每个访问者的 DNS 域名的

反向查询。
对于繁忙的网站,在 httpd.conf 中设置 "MaxClients 230" 或者更高。这项设置让更

多的 httpd 进程同时响应请求,并避免了处理器排队的情况发生。
采用另外一台服务器处理图片文件。
缺保您的 Web 页面和 CGI 页面采用了浏览器缓冲技术。具体的文章可以参考本站:采

用 mod_gzip 加速 Zope 和 Apache
保持您的 Apache 苗条,编译那些仅仅需要的模块,在编译之前,修改

src/Configuration 文件,在那些不需要的模块之前用 # 号注释掉。

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论