每隔几天我的服务器就会崩溃。平均负载和内存使用率非常高,直到它停止响应所有请求。
发生这种情况时会发生奇怪的事情,即即使服务器负载很高,静态页面仍能正常工作,但带有 mysql 查询的页面运行缓慢,甚至有时无法响应请求。
我找不到任何可能发生的事/var/log/messages
当我在 shell 上输入 top 时,我得到了一些类似这样的可疑信息:
12508 nobody 18 0 214m 19m 12m R 81.8 0.2 4:02.62 httpd
我不确定,但这是否意味着有一个 httpd 进程运行了超过 4 个小时?
当服务器几乎完全崩溃时,其他进程也会有较高的 TIME+ 值。
这些过程可能是问题所在吗?
有哪里可以找到 mysql 日志?我在 上什么也没找到/var/log/mysql
。
有人知道可能是什么问题吗?
答案1
问题可能出在很多方面。如果你正在交换,那么你的系统就没有足够的内存,你需要升级或减少正在运行的进程的数量和/或大小。
Apache 工作进程的 CPU 时间超过 4 小时(或 4 小时前启动的进程)不是问题;这就是它应该做的事情 - 在处理请求时闲置并消耗 CPU。Apache 工作进程可以是问题的原因,但从提供的信息来看,无法说出。
我可以继续说下去,但我在一篇文章中已经提到过,解决 Linux 系统上的性能问题。我强烈建议您阅读它,遵循它的建议,然后如果您需要帮助解释某些内容,请带着包含特定分析数据的新问题回来。
答案2
您可能遇到了磁盘子系统或 I/O 问题。您的日志中是否有时间间隔?某些进程可能正在 RAM 中运行,而任何需要磁盘访问的进程都停滞或失败,从而增加了负载。您如何从中恢复?硬重启?