Apache2 因 select() 调用而 100% 过载

Apache2 因 select() 调用而 100% 过载

每天一到两次,我的 Debian 5.0.3 上的 Apache(已升级到最新软件包)的 CPU 占用率会达到 100%(一些进程),并且会一直保持这种状态,直到重新启动。 Strace 显示了很多这样的情况;

select(1043, [1042], [], NULL, {1, 0})  = 1 (in [1042], left {1, 0})
select(1043, [1042], [], NULL, {1, 0})  = 1 (in [1042], left {1, 0})
select(1043, [1042], [], NULL, {1, 0})  = 1 (in [1042], left {1, 0})
select(1043, [1042], [], NULL, {1, 0})  = 1 (in [1042], left {1, 0})
select(1043, [1042], [], NULL, {1, 0})  = 1 (in [1042], left {1, 0})
select(1043, [1042], [], NULL, {1, 0})  = 1 (in [1042], left {1, 0})

迅速地互相追随。

这是什么?这是带有 memcached 的常规 LAMP 安装。

问题就开始了(我们认为),当我们开始直接输出 S3 而不是先获取整个文件时,因此在伪代码中;

首先我们有;

print file_get_contents($s3url);

现在我们有了;

$f = fopen($s3url, "r"); 
while($s=fread($f, 4096)) echo $s;
fclose($f);

答案1

您是否检查过 Apache 服务器用户的最大打开文件数?

su -s /bin/sh -www-数据 ulimit -a

然后检查 /proc 中系统范围的打开文件限制。

相关内容