![Apache 挂起,Apache 错误日志显示“超时”](https://linux22.com/image/485045/Apache%20%E6%8C%82%E8%B5%B7%EF%BC%8CApache%20%E9%94%99%E8%AF%AF%E6%97%A5%E5%BF%97%E6%98%BE%E7%A4%BA%E2%80%9C%E8%B6%85%E6%97%B6%E2%80%9D.png)
我正在运行 OpenBSD 的 chrooted httpd 进程,过去几天我遇到了随机挂起的情况,这些挂起无需我的干预即可自行清除。起初我以为这可能是资源问题,因为 SSH 同时挂起,但控制台上一直运行着“top”,没有显示任何异常(内存使用率低,没有高负载等)。
我设法让我的用户在发生这种情况时(而不是 20-30 分钟后)准确地给我打电话,并在我的错误日志中注意到以下内容:
Timeout
^@Timeout
^@Timeout
^@Timeout
这就是全部内容。有时 ^@Timeout 的数量会有所不同,但这就是全部内容。我查看了访问日志,看看某些可能挂起的进程(如 curl 调用)是否可能正在执行此操作,但我没有看到任何关联。
该网站运行在自定义 PHP 应用程序中,直到最近,它都没有出现任何问题。在出现此问题的同时,没有推送任何新的代码更改。
还有人遇到过类似的情况吗,或者有什么想法吗?
[编辑 - 2009 年 6 月 11 日]
看起来这台服务器之外还发生了其他事情。超时打印似乎是随机发生的,但我认为在网络层面上也发生了同样的情况,即连接挂起。
不过还是感谢您的意见!
答案1
我们曾经遇到过类似的 SVN 问题。结果是系统熵池偶尔会完全耗尽,然后 SVN 和其他一些东西(不记得是什么了)就挂了。这可能是 SSH 的一个问题,如果 PHP 正在使用熵,那么 Apache 也可能存在这种情况。
您可以使用以下命令检查 OpenBSD 框中的熵值:
sysctl kern.random
作为输出,您将获得很多数字。这些描述如下/usr/include/dev/rndvar.h
:
struct rndstats {
quad_t rnd_total; /* total bits of entropy generated */
quad_t rnd_used; /* strong data bits read so far */
quad_t rnd_reads; /* strong read calls */
quad_t arc4_reads; /* aRC4 data bytes read so far */
quad_t arc4_nstirs; /* arc4 pool stirs */
quad_t arc4_stirs; /* arc4 pool stirs (bits used) */
quad_t rnd_pad[5];
quad_t rnd_waits; /* sleeps for data */
quad_t rnd_enqs; /* enqueue calls */
quad_t rnd_deqs; /* dequeue calls */
quad_t rnd_drops; /* queue-full drops */
quad_t rnd_drople; /* queue low watermark low entropy drops */
quad_t rnd_ed[32]; /* entropy feed distribution */
quad_t rnd_sc[RND_SRC_NUM]; /* add* calls */
quad_t rnd_sb[RND_SRC_NUM]; /* add* bits */
};
如果事实证明这确实是一个熵问题,您可以考虑/dev/urandom
为您的 PHP 应用程序使用非强随机生成器,例如。