我正在运行OpenBSD的chroot httpd进程,在过去的几天里,我得到了一些随意的hangups,在没有任何干预的情况下自行清理。 起初我以为这可能是一个资源问题,因为SSH挂在同一时间,但已经离开“顶部”在控制台上显示没有任何exception(内存使用率低,没有高负载等)。
我设法让我的用户在20-30分钟之后发生这种情况,并在我的错误日志中注意到以下情况:
Timeout ^@Timeout ^@Timeout ^@Timeout
这就是所有这一切。 有时候,^ @超时的数量是不一样的,但那只是坐在那里。 我查看了访问日志,看看是否有一些像curl调用这样的可能挂起的进程可能会这样做,但是我没有看到任何关联。
在自定义的PHP应用程序中运行的网站,直到最近,没有任何问题。 没有新的代码更改被推上去,同时开始发生。
任何人遇到这样的情况,或有任何想法?
[编辑 – 06-11-2009]
看起来像别的东西正在这个服务器之外。 超时打印似乎是随机发生的,但我认为我看到这种相同的事情发生在networking层面,连接挂起。
感谢您的input,虽然!
一旦我们有与SVN类似的问题。 事实certificate,系统熵池有时会完全耗尽,然后SVN和其他东西(不记得是什么)挂起。 这可能是一个关于SSH的案例,如果PHP正在使用熵,这也可能是Apache的情况。
你可以使用以下命令在你的OpenBSD盒子上检查熵leven:
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 */ };
如果事实certificate这确实是一个熵的问题,你可能会考虑使用非强大的随机生成器,如/dev/urandom ,为您的PHP应用程序。