服务器突然变得非常繁忙并且没有响应任何内容:ssh 或 web 请求。
它已经自动发生了好几次了,所以显然我的系统出了问题。
重启后一切恢复正常,网站运行速度快,响应迅速。但大约 24 小时后,它突然再次陷入同样的麻烦 - 非常繁忙,没有响应任何内容,花了几十分钟才重新启动。
我不知道是什么原因导致的。配置错误?我的 PHP 代码?但我的所有网站在之前的主机上都运行正常。
我的发行版是 Debian 5.0。我安装了以下内容:
- 阿帕奇,mysql,php
- rsnapshot(一些 cron 作业)
- 后缀
- vsftpd(虽然已自动停止)
- chkroot工具
- 失败2ban
有人知道吗?可能是什么问题?我需要查看哪些日志才能找出哪个 php 脚本可能导致了问题?
答案1
最有可能的是内存泄漏。这有时会导致您所描述的那种问题。如果您有交换内存,大量交换可能会严重减慢速度,以至于几乎无法使用。否则,OOM 错误会杀死随机应用程序并导致系统故障。
最好的办法是检查日志,看看是否有任何内核 OOM 错误。否则,您可能需要考虑监控内存使用情况,看看它是否会随着时间的推移而变得太大。一旦您确认内存不足,您就可以继续跟踪导致问题的程序。
更新:
避免交换的唯一方法是减少内存占用。一种方法是更改应用程序和设置。您可能需要考虑以下几点:
- 放弃 Apache,转而使用 lighttpd/nginx 等轻量级 Web 服务器。减少
php
它在处理脚本时生成的实例数量。 - 使用示例
/usr/share/doc/mysql-server-5.0/example/my-small.cnf
配置文件配置 MySQL。禁用网络、innodb、bdb 以减少占用空间。 - 配置 PHP 以将内存从默认的 128Mb 限制为您所需的内存。
- Postfix 会生成多个进程来处理内存,这会消耗大量资源。考虑使用 qmail 或外包您的电子邮件服务器。
干杯。