我们有邮件服务,详情如下:
1-Centos 6.4
2:Postfix 2.6.6
3:roundcube 0.8
4:dovecot 2.0.9.7
5:mysql-server 5.1.71
一切正常,但在高峰使用时间,roundcube 睡眠连接数在不到 10 分钟的时间内从 1 或 2 或 3 增加到 270,并且 apache 打开的文件(以 lsof 测量)在高峰时间内从 4000 增加到 20000。
这是 apache conf:(apache 在 prefork 模式下工作)
PidFile run/httpd.pid
Timeout 60
KeepAlive On
MaxKeepAliveRequests 100
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
TraceEnable off
LimitRequestLine 1024
LimitRequestFields 100
LimitRequestFieldsize 1024
LimitRequestBody 10241024
这是 mysql 配置:
secure_auth=1
local_infile=0
max_connections = 600
max_allowed_packet = 16M
key_buffer =256M
wait_timeout=240
interactive_timeout=180
connect_timeout=10
innodb_buffer_pool_size=2G
当 roundcube 的睡眠连接数增加到 >100 时,几乎所有服务(web、mail、mysql)都瘫痪了....
谢谢您的任何建议。
答案1
答案是:
我已经编辑 apache max_client 选项以降低值 256 --> 50,为什么!?
对于(仍然)未知的问题,所有预分叉的 apache 进程的 CPU 使用率约为 100%(运行预分叉的 apache 进程的核心在短时间内使用率为 100%)
因此系统会宕机,因为系统有 64 个 CPU 核心,当 Apache 的所有 256 个进程都使用了 100% 的 CPU 使用率时,系统和服务就会宕机
问题仍然存在,但服务没有问题我认为问题与网络攻击有关(我们的监控工具每天报告许多次攻击),有时会导致资源锁定或其他问题。
感谢您的所有建议。
答案2
现在
大约 5 年后
该问题已在几天内被发现和解决。
对于像我这样的初级系统管理员来说,这太复杂了;)
我的队友在 iSCSI LUN 上准备的 GFS2 集群文件系统出现问题,此问题导致 Dovecot 和 roundcube(然后是 apache)中出现各种问题
供您参考,当我注意到 top 命令上的 %wa 参数时(大约 90%),我认为(也许)文件系统级别存在问题。
然后我决定将所有数据传输到新的集群文件系统(ocfs2),因为 GFS 已被弃用!
首先,将所有数据移动到新的集群文件系统(在 ocf2 上),然后基于 debian wheezy 上的 pacemake haproxy 重新设计整个系统!