CentOS 5.2 LAMP 服务器
服务器速度变慢,以至于没有服务响应。几分钟后,服务器恢复正常并运行良好。服务器一直在重复这个循环,到底出了什么问题?
我暂时停止了exim
和服务。我使用命令查看了 CPU 使用率,但即使服务器停止响应,所有 CPU 使用率也为 0。我还运行了一个 Java tomcat 服务,我也已将其停止,但问题仍然存在。proftpd
top
日志没有显示任何 dos/ddos 的迹象。
有任何想法吗?
答案1
要检查的事项的简要列表:
- 检查 top 的 CPU 使用率、负载和内存使用率。这应该可以很好地指示问题是什么。如果负载非常高,则说明您的服务器流量太大,无法处理。如果 IO 等待百分比很高,则说明磁盘活动太多。如果根本没有负载/CPU 使用率,则可能是某种应用程序锁定。
- 在顶部检查使用大量内存/CPU 的应用程序(M=按内存排序,P=按 CPU 使用率排序),或至少超过应有的内存/CPU 使用率。通过查找“S”列中的“D”来检查锁定的应用程序。
- 检查 top/free/vmstat 以了解交换使用情况。它应该为 0 或非常低。如果您正在使用交换,则必须重新配置 LAMP 堆栈以使用更少的内存。
- 检查 netstat 是否存在 DoS 迹象(例如)。
- 检查系统 (/var/log/messages) 和应用程序日志 (Apache、MySQL 等...) 中是否有相关错误消息。如果每隔几分钟就会重复出现,您可能会看到错误消息的模式。
- 通过 检查磁盘空间
df -h
并使用 检查磁盘状态smartctl
。 - 如果所有这些似乎都没有显示任何问题,则可能是某种应用程序问题或死锁。尝试启用/向应用程序添加调试日志记录,看看是否能缩小问题发生的位置。
答案2
在这种情况下,可能最好的工具是sar
。它应该会显示截至服务器冻结时的统计数据。如果您没有安装它,它是软件包的一部分sysstat
。
它多久发生一次?一天一次,还是每隔几个小时一次?听起来可能是内存或磁盘 I/O,但我不太确定。