我正在运行带有 modpython 和 mpm_worker_module 的 apache2 2.2.9 网络服务器。
mpm 的当前配置是
ServerLimit 32
StartServers 10
MaxClients 800
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
该服务器有 1G 内存和 100Mbit 连接。
检查netstat -na | grep ESTABLISHED | wc -l给我一个 50 - 60 之间的数字。负载大约为 1.0 每个页面加载也由 memcached 缓存。
我不明白为什么服务器对新连接的响应如此缓慢,有时会完全丢弃它们?
还尝试禁用 iptables 以确保不是由于状态表已满或类似原因造成的。
dmesg 中唯一的内容是大量关于“TCP:叛国罪被揭露!”的垃圾邮件。
即使使用 apache2ctl 状态连接到 localhost 也会失败,因此它不应该与 modpython 有关。当状态确实有效时,它显示正在处理大约 110-128 个请求。大约一半是状态 C(正在关闭连接),大量 _(正在等待连接),其余的是 R 和 W
答案1
error_log 报告了什么?它是开始调试此类问题的最佳位置。
top 也是调试此问题的一种好方法。运行 top 并检查 Apache 进程是否占用过多 CPU。然后键入 M 按内存使用情况对进程进行排序,并检查它们是否消耗过多 RAM。
还请检查是否正在交换:
free
memcached 在同一台服务器上运行吗?如果是这样,它分配了多少内存?
另外,您是否遇到了 i/o 等待问题?运行 top 时检查 %wa 值。
关于网络,您遇到错误或 CRC 吗?使用 netstat 检查:
netstat -i
查看 RX-ERR、RX-DRP、TX-ERR 和 TX-DRP 列。理想情况下,这些值应为 0。
希望这可以帮助。