Apache 服务器卡住了

Apache 服务器卡住了

我在 amazon ec2 上有 Fedora 8 32 位 vps

1.7G 内存

经过几次运行(不知道有多少次),服务器就卡住了,无法加载(无法通过 http:// 访问)

当使用'top'时我得到:

     1948 memcache  15   0 33048  856  424 S  0.0  0.0   0:00.04 memcached
 2031 root      25   0  2640 1208 1040 S  0.0  0.1   0:00.00 mysqld_safe
 2091 mysql     18   0  137m  24m 5472 S  0.0  1.4   0:09.16 mysqld
 6690 root      18   0 59928 7968 4712 S  0.0  0.5   0:00.01 httpd
 6692 apache    15   0 61100  18m  14m S  0.0  1.1   0:00.10 httpd
 6693 apache    22   0 69996  40m  27m S  0.0  2.4   0:00.73 httpd
 6694 apache    18   0 64744  27m  19m S  0.0  1.6   0:00.87 httpd
 6695 apache    15   0 82488  53m  28m S  0.0  3.1   0:02.25 httpd
 6696 apache    15   0 67408  36m  25m S  0.0  2.1   0:00.93 httpd
 6697 apache    15   0 64248  26m  18m S  0.0  1.5   0:00.23 httpd
 6698 apache    15   0 65884  27m  17m S  0.0  1.6   0:00.38 httpd
 6699 apache    18   0 64840  26m  17m S  0.0  1.5   0:00.42 httpd
 6700 apache    15   0 66324  34m  25m S  0.0  2.0   0:00.93 httpd
 6702 apache    15   0 68668  29m  17m S  0.0  1.7   0:01.20 httpd
 6703 apache    16   0 60344  10m 6788 S  0.0  0.6   0:00.01 httpd
 6704 apache    15   0 65784  27m  18m S  0.0  1.6   0:00.84 httpd
 6705 apache    15   0 60336  10m 6596 S  0.0  0.6   0:00.00 httpd
 6706 apache    15   0 65948  27m  18m S  0.0  1.6   0:00.83 httpd
 6707 apache    15   0 64836  25m  17m S  0.0  1.5   0:00.19 httpd
 6708 apache    15   0 67104  26m  16m S  0.0  1.6   0:00.21 httpd

我不知道它有多少 mb,只有'service httpd restart'才能让它再次上线,我没有太多的流量,因为它现在只是测试服务器

我安装了 php5.2.6 和 mysql 5.1.6

以下是配置的部分:

Timeout 25
KeepAlive On
MaxKeepAliveRequests 150
KeepAliveTimeout 3
<IfModule prefork.c>
StartServers       20
MinSpareServers    20
MaxSpareServers    50
ServerLimit        500
MaxClients         500
MaxRequestsPerChild  4000
</IfModule>

<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75 
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

HostnameLookups Off

可能是什么问题?谢谢

编辑:我注意到像 .html、.txt 这样的静态文件可以很好地服务

当使用 php 时我们遇到了问题,我测试了 2 个简单的脚本:

<?php getcwd(); ?>
<?php phpinfo(); ?>

php 作为 apache_module 加载

php 内存限制为 128M

可能是什么问题?再次感谢

答案1

对于只有 1.7G 内存的服务器来说,150 个 KeepAliveRequests 太多了。将其减少到 30-50。您还应该减少最大实例数。您无法在该内存中容纳 500 个实例,我会在这里放置 200-300 个。

我建议你的应用程序是否需要你给 php 的那 128M?如果不需要,也减少它。

启用扩展服务器状态并查看http://服务器/服务器状态/进行进一步优化。

答案2

我认为您启动了太多服务器实例。您使用哪个模块作为工作模块?prefork.c 还是 worker.c?

如果您使用 prefork.c,请将“StartServers”、MinSpareServers 和 MaxSpareServers 的值设置为较低的值,然后查看服务器是否再次挂起。

<IfModule prefork.c>
  StartServers       5
  MinSpareServers    5
  MaxSpareServers    10
  ServerLimit        500
  MaxClients         500
  MaxRequestsPerChild  1000
</IfModule>

还要检查 apache 错误日志是否存在问题。

相关内容