`
shixiaomu
  • 浏览: 383872 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux apache time wait

阅读更多
经常检查apache的连接数,会发现很多无用的time_wait连接。有人说这是正常的,是因为一个请求中途中断造成的;还有人说微软的IE连接时产生的Time_wait会比用Firefox连接时多。个人认为有一定的Time_wait是正常的,如果超过了连接数的比例就不是很正常,所以还是找来方法解决一下。

  先检查一下time wait的值:

  [root@aaa1 ~]#sysctl -a | grep time | grep wait

  net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120

  net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60

  net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120

  这里解决问题的关键是如何能够重复利用time_wait的值,检查net.ipv4.tcp_tw当前值:

  [root@aaa1 ~]# sysctl -a|grep net.ipv4.tcp_tw

  net.ipv4.tcp_tw_reuse = 0

  net.ipv4.tcp_tw_recycle = 0

  增加或修改net.ipv4.tcp_tw值,将当前的值更改为1分钟(reuse是表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接; recycle是加速TIME-WAIT sockets回收):

  [root@aaa1 ~]# vi /etc/sysctl.conf

  net.ipv4.tcp_tw_reuse = 1

  net.ipv4.tcp_tw_recycle = 1

  使内核参数生效:

  [root@aaa1 ~]# sysctl -p

  用netstat再观察时会发现已经恢复正常。

  结合DDOS和TIME_WAIT过多,建议增加如下参数设置:

  # Use TCP syncookies when needed

  net.ipv4.tcp_syncookies = 1

  net.ipv4.tcp_synack_retries=3

  net.ipv4.tcp_syn_retries=3

  net.ipv4.tcp_max_syn_backlog=2048

  # Enable TCP window scaling

  net.ipv4.tcp_window_scaling: = 1

  # Increase TCP max buffer size

  net.core.rmem_max = 16777216

  net.core.wmem_max = 16777216

  # Increase Linux autotuning TCP buffer limits

  net.ipv4.tcp_rmem = 4096 87380 16777216

  net.ipv4.tcp_wmem = 4096 65536 16777216

  # Increase number of ports available

  net.ipv4.tcp_fin_timeout = 30

  net.ipv4.tcp_keepalive_time = 300

  net.ipv4.tcp_tw_reuse = 1

  net.ipv4.tcp_tw_recycle = 1

  net.ipv4.ip_local_port_range = 5000 65000

  附:查看当前的连接数状况

  netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n

  1 established

  1 State

  2 LAST_ACK

  4 CLOSING

  4 FIN_WAIT2

  9 LISTEN

  17 FIN_WAIT1

  18 SYN_RECV

  27 ESTABLISHED

  811 TIME_WAIT

  上面的命令可以帮助分析哪种tcp状态数量异常。其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。

  附:查看IP连接数状况

  netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n

  发现异常的,可以封了这个IP

 新增的一组Apache服务器上线以来,我用netstat -an命令发现服务器中有大量状态为TIME-WAIT的TCP连接,于是用/sbin/sysctl -a查看了一下Linux的各项内核参数,并翻阅有关资料,决定修改其中的两项参数,以达到减少TCP连接中TIME-WAIT sockets的目的。
  vi /etc/sysctl.conf
  编辑/etc/sysctl.conf文件,增加三行:
  引用
  net.ipv4.tcp_syncookies = 1
  net.ipv4.tcp_tw_reuse = 1
  net.ipv4.tcp_tw_recycle = 1
  说明:
  net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
  net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
  net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
  再执行以下命令,让修改结果立即生效:
  /sbin/sysctl -p
  用以下语句看了一下服务器的TCP状态:
  netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
  返回结果如下:
  ESTABLISHED 1423
  FIN_WAIT1 1
  FIN_WAIT2 262
  SYN_SENT 1
  TIME_WAIT 962
  效果:处于TIME_WAIT状态的sockets从原来的10000多减少到1000左右。处于SYN_RECV等待处理状态的sockets为0,原来的为50~300。(王朝网络 wangchao.net.cn)
分享到:
评论

相关推荐

    查看apache连接的连接并发数

    管理员还可以使用Linux命令netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'来查看Apache服务器的TCP连接状态,该命令可以显示当前Apache服务器的TCP连接状态,包括SYN_RECV、ESTABLISHED、...

    优化Linux的内核提高服务器并发能力

    通过对Linux内核参数进行调整,可以减少TIME_WAIT状态的持续时间,提高端口的利用率。 3. 使用高性能的Web服务器:选择适合的Web服务器软件也是提高服务器并发能力的一个重要方面。例如,nginx通常被认为在高负载...

    linux内核参数

    Linux内核参数调优是优化服务器性能的关键环节,特别是在硬件资源有限的情况下,通过调整内核参数可以有效地提高服务器的并发处理能力。对于Web服务器,如Nginx和Apache,它们的并发模型对于处理高负载至关重要。...

    linux 下tcp参数优化

    当服务器程序 APACHE 处于 CLOSE_WAIT 状态时,说明套接字是被动关闭的。这是因为如果客户端主动断掉当前连接,那么双方关闭这个 TCP 连接共需要四个 packet:Client —> FIN —> Server、Client <— ACK <— Server...

    查看apache连接的连接并发数[参照].pdf

    本文将深入探讨如何查看Apache服务器在prefork模式下的连接并发数,以及通过Linux命令监控Apache的TCP连接状态。 首先,Apache的prefork模型是一种多进程模型,每个进程(也称为服务器进程)可以处理一个单独的...

    MySQL Tomcat Apache优化

    当Apache服务器面临大量TIME_WAIT状态的连接时,可能会导致新的连接请求被拒绝。解决这一问题的方法包括: - **调整TCP参数**:例如,通过设置`net.ipv4.tcp_tw_reuse = 1`允许重用处于TIME_WAIT状态的连接,从而...

    精通linux下C语言源代码

    C语言提供了丰富的系统调用来控制进程,如fork()用于创建子进程,exec()系列函数用于替换当前进程的执行映像,wait()和waitpid()用于等待子进程结束,而signal()则用于处理信号。了解这些系统调用的工作原理和使用...

    如何查看Apache的连接数和当前连接数

    反之,如果TIME_WAIT状态的连接过多,可能要考虑调整服务器的TIME_WAIT超时设置,以释放资源。 总的来说,掌握查看Apache连接状态的方法有助于系统管理员及时发现和解决服务器性能问题,优化服务配置,提升用户体验...

    linux+tomcat+mysql+solr调优

    该选项可以减少TIME_WAIT sockets的数量,从而降低系统的内存使用。 - `net.ipv4.tcp_fin_timeout`:设置TIME_WAIT socket的最大存活时间。根据具体的应用场景调整该值,以减少TIME_WAIT状态的socket数量。 ##### ...

    Linux运维工程师工作手册.docx

    使用`netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'`查看网络连接状态,关注`ESTABLISHED`和`TIME_WAIT`状态的连接数。 12. **处理TCP TIME_WAIT套接字**: 对于高并发场景,过多的TIME...

    linux运维笔试面试题.pdf

    - 端口状态:例如TIME_WAIT、CLOSED、ACK,是TCP连接状态的一部分。 7. Linux内核与进程管理: - CPU调度:如上下文切换(context switching)和CPU时间片(time-slice)。 - 线程与进程:它们是操作系统中进行...

    linux整理简单齐全运维手册.docx

    `netstat -n`命令显示网络连接状态,重点关注`ESTABLISHED`(活动连接)和`TIME_WAIT`(等待关闭的连接)的数量,以优化并发处理和资源使用。 8. **安全防护**: 找到恶意IP并使用`iptables`禁止其连接,例如`...

    linux下动态网站维护基本命令小结

    TCP连接数,TIME_WAIT 等 (2).服务运行情况 用户能否访问 代码如下: tail -f 查看apache访问日志与错误日志 查看系统日志/var/log/messages 查看服务器与Mysql数据库的连接情况 3.故障处理 (1).PHP类动态网站 服务...

    Linux安装nginx/mysql/php/zabbix

    lock_wait_timeout=1800 skip_name_resolve=1 max_connections=1000 max_connect_errors=100000 ``` #### 初始化MySQL安装 1. **初始化MySQL**: ```bash /opt/platform/mysql/bin/mysqld --initialize-...

    浏览器与apache通讯中的TCP连接状态迁移

    8. 浏览器收到ACK报文,进入TIME_WAIT状态,等待一段时间确保服务器收到其ACK,然后关闭连接。 9. 服务器收到ACK后,进入CLOSED状态,连接关闭。 值得注意的是,操作系统会有一个超时机制来释放未及时关闭的连接,...

    linux 后台日志 mysql 错误异常的解释(推荐)

    在Linux系统中,MySQL数据库是广泛使用的开源关系型数据库管理系统。在日常运维中,了解如何解读MySQL的后台日志以及处理错误异常是非常重要的。这里我们将深入解析标题和描述中提到的错误,帮助你理解问题所在并...

    linux操作系统考试试卷(含答案)J.doc

    **解析**:对于 Web 服务器的配置,通常使用 `httpd.conf` 或者 `apache2.conf`(取决于使用的 Web 服务器软件)来进行配置。其他选项的功能分别是: - `lilo.conf` 用于配置 Lilo 引导加载程序。 - `inetd.conf` ...

    nginx优化 突破十万并发

    9. 对于内核参数的优化,例如调整net.ipv4.tcp_max_tw_buckets来减少timewait的数量,调整net.ipv4.ip_local_port_range来扩大允许系统打开端口的范围,以及启用net.ipv4.tcp_tw_recycle和net.ipv4.tcp_tw_reuse来...

    Centos7 kickstart 配置

    wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 } ``` - 启用并重启 xinetd 服务: ``` systemctl ...

Global site tag (gtag.js) - Google Analytics