所以我的 lighttpd 已经运行了一年多。两天前我决定安装 Wordpress 3.0.1(其他工具已经在使用 PHP)。
因此,在几个小时内点击量很少之后(我每天最多会有 10 个独立访问者),系统几乎挂起,负载达到 25-35,lighttpd 占用了所有的 CPU 和 RAM(参见top
文章末尾)。
我读过类似的问题,但似乎没有一个是这里发生的。网上的“解决方案”就像安装一个 Wordpress 缓存插件,我就是这么做的(W3 Total Cache)。由于问题不是在晚上发生的,所以我认为问题出在这里。但现在机器完全超载了,甚至 OOM Killer 也在启动。
重新启动 lighttpd 有帮助,但这不是真正的解决方案。
系统规格:
- 英特尔赛扬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“定期检查 - 因此上面有“心跳”样式的图表。这是一项正在进行的工作,我正在做进一步的调整。