之前写过一篇关于apache的并发请求的文章,如今更深入的研究了一下,给大家分享,自己也做个笔记了。
上次说到这个牛逼的语句
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
FIN_WAIT_1 286
FIN_WAIT_2 960
SYN_SENT 3
LAST_ACK 32
CLOSING 1
CLOSED 36
SYN_RCVD 144
TIME_WAIT 2520
ESTABLISHED 352
返回参数的说明如下:
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
TIME_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
TCP变迁图:

pache服务器的fin_wait1过多time_wait过多问题解决
1、fin_wait1状态过多。fin_wait1状态是在server端主动要求关闭tcp连接,并且主动发送fin以后,等待client端回复ack时候的状态。fin_wait1的产生原因有很多,需要结合netstat的状态来分析。
netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n
上面的命令可以帮助分析哪种tcp状态数量异常
netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n
则可以帮助你将请求80服务的client ip按照连接数排序。
2、time_wait状态过多。
通常表现为apache服务器负载高,w命令显示load average可能上百,但是web服务基本没有问题。同时ssh能够登陆,但是反应非常迟钝。
原因:最可能的原因是httpd.conf里面keepalive没有开,导致每次请求都要建立新的tcp连接,请求完成以后关闭,增加了很多time_wait的状态。另,keepalive可能会增加一部分内存的开销,但是问题不大。
分析:如果发现fin_wait1状态很多,并且client ip分布正常,那可能是有人用肉鸡进行ddos攻击、又或者最近的程序改动引起了问题。一般说来后者可能性更大,应该主动联系程序员解决。
但是如果有某个ip连接数非常多,就值得注意了,可以考虑用iptables直接封了他。
查IP的关于80端口的连接数可以用:
netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n
可以看到目前IP的连接数。太多的,就要注意了。
此外再分享一个实时查看apache并发数的:
watch -n 1 -d "pgrep httpd|wc -l",冒号里的语句可以自己调啦~
当然目前我还有几个没搞清楚的问题,希望大家能教教我哈~
分享到:
相关推荐
本文将详细介绍如何实现Apache服务器上的流量控制及连接数限制,并提供具体的步骤和配置示例。 #### 安装与启用流量控制模块 为了实现流量控制功能,首先需要安装一个名为`mod_bw`(BandwidthMod)的第三方模块。...
- **说明**:超过此数值后,关闭连接并重新建立新连接。 ##### 7. KeepAliveTimeout - **功能描述**:保持连接活动状态的最长时间。 - **配置示例**:`KeepAliveTimeout 15` - **说明**:单位为秒,有助于释放资源...
Apache是世界上最流行的Web服务器软件,它的性能和稳定性对任何网站的运营都至关重要。为了实现Apache服务器的最佳性能,我们需要对其进行参数优化。以下是一些关键的Apache配置参数及其优化建议: 1. **MaxClients...
连接池会检查连接状态,如有必要,会进行回收或重新初始化。 - **关闭连接**:当连接池不再需要时,会根据配置策略关闭多余的或已过期的连接。 2. **使用步骤**: - 引入库:在项目中引入相应的连接池库依赖。 -...
3. **getIncrementalConnections**和**setIncrementalConnections**:这些方法用于获取和设置连接池自动增加的大小,当连接池中的连接被耗尽时,会按照这个数值增加新的连接。 4. **getMaxConnections**和**...
Apache 和 Tomcat 负载平衡的设置是一个关键的服务器管理任务,特别是在处理高流量网站或需要高可用性和可扩展性的应用中。Apache 作为一款流行的开源 Web 服务器,常与 Tomcat(一个 Java Servlet 容器)结合使用,...
- **最小连接数**:连接池中保持的最小连接数,即使在空闲状态下也不会低于这个数值。 - **最大连接数**:连接池的最大容量,超过这个数量的请求将被阻塞或抛出异常。 - **超时设置**:包括获取连接、等待连接的超时...
1. **连接池类型选择**:市面上有许多成熟的数据连接池实现,如Apache的DBCP、C3P0,还有HikariCP、Druid等。不同的连接池有不同的性能特性和配置选项,应根据项目需求和性能要求选择合适的连接池。 2. **初始化...
- 作用:控制空闲状态下最大的连接数,超过此数值的空闲连接将被关闭。 8. **`minIdle`** - 描述:最小空闲连接数。 - 示例:`10` - 作用:保证最小的空闲连接数,避免频繁创建销毁连接。 9. **`logAbandoned`...
神经网络学习(或连接学习):模拟人脑的微观生理级学习过程,以脑和神经科学原理为基础,以人工神经网络为函数结构模型,以数值数据为输入,以数值运算为方法,用迭代过程在系数向量空间中搜索,学习的目标为函数。...
定义了Apache服务器能够同时处理的最大客户端连接数,当达到这个数值时,服务器将不再接受新的连接请求,直到有连接关闭。 #### 三、虚拟主机配置(Virtual Hosts) 虚拟主机配置允许在同一台物理服务器上运行多个...
Apache Tomcat 的 JDBC-Pool 是一个内置的连接池实现,用于高效管理数据库连接。它提供了丰富的配置选项,以满足各种性能和稳定性需求。下面是对标题和描述中涉及的一些关键参数的详细解释: 1. **factory**:这个...
适当增加此数值可以减少连接频繁建立和关闭的开销,提高性能。 - **KeepAliveTimeout(请求超时)**:此设置定义了在保持连接打开状态前等待空闲连接关闭的秒数。适当调整可以避免资源浪费。 2. **IIS配置调优**:...
- `max_connections`: 建议设置为600至1000之间,具体数值应根据实际业务负载和服务器资源情况调整。通常情况下,这个值应大于Web服务器如Apache的`MaxClients`设置。 - `wait_timeout`: 设置较短的时间可以帮助...
2. **minPoolSize**:连接池最小允许的连接数,即使在空闲状态下,连接池也不会低于这个数值。 3. **maxPoolSize**:连接池最大允许的连接数,超过这个数量时,新请求将等待。 4. **maxIdleTime**:连接在池中可以...
### 80端口被system占用导致Apache无法启动的解决方法 #### 一、问题背景 在进行Web服务器配置或开发环境搭建时,经常会遇到Apache服务无法启动的情况。其中一个常见原因是80端口被系统或其他应用程序占用。80端口...
常用的工具如`vmstat`、`top`可以帮助我们实时查看系统状态,发现瓶颈。例如,`vmstat`可显示虚拟内存统计,`top`则能列出进程的CPU和内存占用情况。通过长期收集这些数据,我们可以分析出系统在高负载下的行为,找...
3. **开启TCP连接的快速回收和重用**:通过`echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse`和`echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle`,使得TIME_WAIT状态的连接能更快地被复用,减少连接资源的浪费。 4. **关闭...
- 在每个Tomcat实例的`server.xml`文件中,确保配置了AJP连接器,通常默认端口为8009,但可以根据需求修改为其他端口,如8201和8202。 集群的负载均衡和故障转移依赖于worker的配置。`lbfactor`参数可以调整每个...