今天公司一个网站突然打开特别慢,有时候还会出现打不开的情况,开始怀疑是网络问题,但网络排查没有发现任何异常,最后还是决定在网站服务器内部排查问题
网站用的中间件是apache,监听端口7080,先查看一下7080端口的监听情况
发现出现了大量的TIME_WAIT和CLOSE_WAIT状态下的连接
CLOSE_WAIT
对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭
TIME_WAIT
不同操作系统上默认的MPM模块 | ||
---|---|---|
操作系统 | MPM模块 | 描述 |
Windows | mpm_winnt | 不用介绍了吧:) |
Unix/Linux | mpm_prefork | 不用介绍了吧:) |
BeOS | mpm_beos | 由Be公司开发的一种多媒体操作系统,官方版已停止更新。 |
Netware | mpm_netware | 由NOVELL公司推出的一种网络操作系统 |
OS/2 | mpmt_os2 | 一种最初由微软和IBM共同开发的操作系统,现由IBM单独开发(微软放弃OS/2,转而开发Windows) |
mpm_winnt
模块是专门针对Windows操作系统而优化设计的MPM模块。它只创建一个单独的子进程,并在这个子进程中轮流产生多个线程来处理请求。
(1)由于apache默认状态下mpm模块的代码是注释的,所以需要先修改apche核心配置
修改为
# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf
(2)修改httpd-mpm.conf
<IfModule mpm_winnt_module>
ThreadsPerChild 150 #推荐设置:小型网站=1000 中型网站=1000~2000 大型网站=2000~3500
MaxRequestsPerChild 0 #推荐设置:小=10000 中或大=20000~100000
<IfModule>
对应的配置参数作用如下:
该参数建议设为非零的值,可以带来以下两个好处:
注意:在以上涉及到统计请求数量的参数中,对于KeepAlive的连接,只有第一个请求会被计数。
大量Time_Wait和Close_Wait状态下的TCP连接问题解决
原文:https://www.cnblogs.com/Mr-10/p/10973854.html