lighttpd 占用所有内存和 CPU

lighttpd 占用所有内存和 CPU

所以我的 lighttpd 已经运行了一年多。两天前我决定安装 Wordpress 3.0.1(其他工具已经在使用 PHP)。

因此,在几个小时内点击量很少之后(我每天最多会有 10 个独立访问者),系统几乎挂起,负载达到 25-35,lighttpd 占用了所有的 CPU 和 RAM(参见top文章末尾)。

我读过类似的问题,但似乎没有一个是这里发生的。网上的“解决方案”就像安装一个 Wordpress 缓存插件,我就是这么做的(W3 Total Cache)。由于问题不是在晚上发生的,所以我认为问题出在这里。但现在机器完全超载了,甚至 OOM Killer 也在启动。

重新启动 lig​​httpd 有帮助,但这不是真正的解决方案。

系统规格:

  • 英特尔赛扬2双核2.2GHz
  • 4GB 内存
  • Debian Lenny 5.0.6
  • 内核:2.6.26-2-amd64
  • lighttpd 1.4.19
  • MySQL 5.0.51a
  • PHP 5.2.6-1+lenny

更换硬件是不可能的,因为它是专为低功耗而设计的家用服务器。有什么想法吗?提前致谢。

top - 10:34:04 up 19:03,  1 user,  load average: 25.98, 22.97, 12.51
Tasks: 155 total,  15 running, 140 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.5%us, 95.6%sy,  0.0%ni,  0.0%id,  3.6%wa,  0.0%hi,  0.3%si,  0.0%st
Mem:   4062488k total,  4039436k used,    23052k free,      264k buffers
Swap:   979956k total,   979956k used,        0k free,     3012k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                     
 3648 debian-t  20   0  136m 6972  116 R    7  0.2  30:48.27 transmission-da                              
 2569 root      20   0  196m  900  108 S    5  0.0   4:51.94 rsyslogd                                     
  316 munin     20   0 30592  548  136 D    4  0.0   0:04.68 sendmail                                     
 3377 root      20   0 66292 6864  208 D    4  0.2   2:01.44 python                                       
 3188 www-data  20   0 4074m 3.1g  124 R    4 81.2  12:20.23 lighttpd

编辑:我按照 LatinSuD 的建议安装了一个临时重启脚本。所以明天我可能会告诉你该问题的具体时间间隔。

答案1

您能更新到 lighttpd 的新版本吗?1.4.19 太旧了(最新的 1.4 分支是 1.4.28)。我知道在此期间已经修复了许多内存泄漏问题。

http://redmine.lighttpd.net/projects/lighttpd/repository/entry/branches/lighttpd-1.4.x/新闻

你是如何安装 php 的?如果你使用的是 fastcgi,是否启动了太多的工作进程?确保你没有对 mod_rewrite 进行任何导致无限循环的操作。通常 lighttpd 会检测到这些,但是错误 1775已在 1.4.20 中修复,这可能是您遇到的问题。

答案2

我在 TonidoPlug 上运行 lighttpd,因此监视内存消耗对我来说至关重要。为此,我已将以下脚本设置为每 30 分钟运行一次。可能有更好的方法可以做到这一点,但它对我来说很有效 :-)

echo `date +'%Y%m%d %H%M'`,`free | grep "Mem" | sed -e 's/ \{1,\}/,/g' | sed -e 's/^Mem:.//g'` | cut -d',' -f1,3,4,6,7 >> memorywatch.dat

列标题为:“datetime、used、free、buffers、cached”,输出记录如下所示:20110613 1002,184716,329092,30548,129496

然后,您可以定期将文件导入 Excel/OpenOffice 以生成图表。

就我而言,我运行了一个“同步 && echo 3 > /proc/sys/vm/drop_caches“定期检查 - 因此上面有“心跳”样式的图表。这是一项正在进行的工作,我正在做进一步的调整。

相关内容