如何configurationWeb服务器以使用less量的内存?

我有一个服务器(P4,512 MB DDR2内存)和LAMP(Debian Lenny)安装在它上面。 可用内存减less非常快,我必须重新启动Apache和MySQL来解决它。 在顶部,我看到很多IDLE的apache进程,吃了很多的内存。 我如何configuration服务器来解决它? (已经添加了重启脚本到cron,但这不是一个解决scheme,我认为)谢谢,抱歉我的英语不好。

free输出:

 ax-host:~# free total used free shared buffers cached Mem: 516048 115356 400692 0 20732 54752 -/+ buffers/cache: 39872 476176 Swap: 1515512 17568 1497944 

我的猜测是,大部分内存正在被用于磁盘caching – 这是一件好事,而不是你需要关心的事情,因为内核会根据请求将RAM分配给需要的应用程序。 在这里看到更多的解释。 发布free的输出,以确认什么是使用你的记忆,如果你愿意。

要么删除所有不必要的apache模块,要么考虑使用像nginx或lighttpd这样的较小的httpd。 对于MySQL,检查你的my.cnf来查看你可能能够降低的缓冲区/caching。

你正在寻找的是一些调整configuration,这里有一些提示:

Apache调优技巧:

  1. 升级Apache! 最新版本包含几个性能增强。

  2. 在httpd.conf中,设置“HostNameLookups off”,避免每个访问你的网站的访问者进行反向DNS查询。

  3. 在httpd.conf中,为繁忙的网站设置“MaxClients 230”或更高版本。 这允许更多的httpd守护进程同时运行,并避免堵塞进程队列。
  4. 从另一台机器上提供网页graphics(如GIF文件)。

  5. 确保你的网页和CGI页面是浏览器caching友好的。 请参阅http://mnot.cbd.net.au/cache_docs/上的“Web作者和网站pipe理员caching教程”

  6. 保持你的Apache精益和意味。 使用尽可能less的模块编译Apache。 在编译之前(运行make之前),编辑/apache_1.xx/src/Configuration文件,在任何不需要的AddModule行前加一个#。
  7. 如果您不需要stream量日志(例如只提供graphics的站点),则使用httpd.conf中的TransferLog指令将日志条目redirect到/ dev / null /
  8. 除非您坚持使用.htaccess文件来控制对特定目录的访问(还有其他方法可以这样做),否则请在部分中的access.conf(或更新版本的Apache中的httpd.conf)中设置“AllowOverride None”每个请求中,Apache都不会在每个目录中寻找一个.htaccess文件。
  9. 不要让不必要的后台进程运行。 去除多余的后台任务不仅可以提高性能,还可以提高安全性。 在/etc/rc.d/rc3.d/目录中[在其他系统上,这可能与Debian不同,它是/etc/rc2.d/。 -D。],将符号链接删除到不需要运行的进程。 对于Linux中普通的本地磁盘web服务器,你只需要在你的/etc/rc.d/rc3.d/目录下路由,networking,inet,httpd和本地符号链接。 如果更改该目录的内容,请重新启动机器。
  10. 请勿在networking磁盘驱动器(即NFSnetworking磁盘)上提供网页或写入networkingstream量日志 – 只能读写本地磁盘驱动器。 NFS I / O操作会产生巨大的开销。
  11. 不要通过/etc/inetd.conf中的tcpd包装运行Apache(httpd)。 当机器引导时,可以通过将启动命令添加到rc.local文件或将httpd启动脚本放置到/etc/rc.d/rc3.d/目录来启动Apache。 如果你想要一些机制来阻止IP地址请求,那么使用Apache的conf文件或者.htacess文件中的“deny from”指令。
  12. 如果您不使用X服务器,请不要使X Windows在您的Web服务器上运行 – 只要确保使用Ctrl-Alt-BackspaceclosuresX会话即可。
  13. 避免使用SSI标签。
  14. 在CGI脚本中:
    • 文件I / O:尽可能less地打开文件。 一定要明确closures每个打开的文件。 停止阅读文件,只要你find你需要的数据。 考虑将数据文件构造成固定长度的字段,并使用read()函数跳过前面的部分文件。
    • Shell命令:通过它们的完整path调用shell命令:例如。 在perl脚本中使用'/ bin / date'而不是date
    • 如果你的网站主要是CGI驱动的,那么一定要用mod_perl。 请参阅http:// perl.apache.org/
    • Perl程序员应该学习Joseph N. Hall(Addison Wesley着)的“Effective Perl Programming”和Tom Christiansen(O'Reilly出版的书)的“The Perl Cookbook” – 两个优化Perl代码的优秀文本。 例如,你可以预先分配一个散列的内存,其中包含256个项目,如:keys(%names)= 256;
    • 避免在您的网页目录中有超过1000个文件。 将您的网页文件组织成子目录。 目录中的文件越多,请求期间查找该文件的时间就越长。
  15. 在您的网页尽可能less的graphics。 确保每个图像都通过图像压缩器运行。
  16. 压力testing你的网站。 在Apache的/ bin或/ sbin目录下运行Apache Benchmark程序(称为“ab”)。 ab程序将通过在任何网页上同时运行多个请求来模拟繁忙的stream量,只要您想要,然后测量负载和响应时间。 测量调整效果非常有用。
  17. 为了获得最佳性能,请从networking服务器上拔下网线 – 负载几乎立即下降到零! http://alicayli.ksu.edu.tr/?p=74