每天一到两次,我的 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 中系统范围的打开文件限制。