一生一世学坛

 找回密码
 立即注册
搜索
查看: 4057|回复: 0
打印 上一主题 下一主题

系统中端口回收太慢-出现大量TIME_WAIT

[复制链接]

334

主题

385

帖子

6830

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6830
跳转到指定楼层
楼主
发表于 2021-7-13 20:31:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
系统中端口回收太慢-出现大量TIME_WAIT:
Linux下:
  1. 今天发现网站特别卡!!

  2. 查看网络连接数:

  3. netstat -an |wc -l

  4. netstat -an |grep xx |wc -l        查看某个/特定ip的连接数

  5. netstat -an |grep TIME_WAIT|wc -l    查看连接数等待time_wait状态连接数

  6. netstat -an |grep ESTABLISHED |wc -l    查看建立稳定连接数量



  7. 查看不同状态的连接数数量

  8. [root@cp-nginx ~]# netstat -an | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'

  9. LISTEN 8

  10. ESTABLISHED 2400

  11. FIN_WAIT1 2

  12. TIME_WAIT 6000



  13. 查看每个ip跟服务器建立的连接数

  14. [root@cp-nginx ~]# netstat -nat|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn

  15.      31 45.116.147.178

  16.      20 45.116.147.186

  17.      12 23.234.45.34

  18.      11 103.56.195.17

  19. (PS:正则解析:显示第5列,-F : 以:分割,显示列,sort 排序,uniq -c统计排序过程中的重复行,sort -rn 按纯数字进行逆序排序)



  20. 查看每个ip建立的ESTABLISHED/TIME_OUT状态的连接数

  21. [root@cp-nginx ~]# netstat -nat|grep ESTABLISHED|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn

  22.      24 103.56.195.17

  23.      19 45.116.147.186

  24.      18 103.56.195.18

  25.      17 45.116.147.178





  26. 解决time_wait连接数大量问题

  27. 查询到time_wait连接数过多情况下,调整内核参数:/etc/sysctl.conf

  28. vim /etc/sysctl.conf



  29. 添加以下配置文件:

  30. net.ipv4.tcp_syncookies = 1
  31. net.ipv4.tcp_tw_reuse = 1
  32. net.ipv4.tcp_tw_recycle = 1
  33. net.ipv4.tcp_fin_timeout = 300



  34. /sbin/sysctl -p 让参数生效,调优完成



  35. 参数详解:

  36. 1.net.ipv4.tcp_syncookies = 1 表示开启 syn cookies 。当出现 syn 等待队列溢出时,启用 cookies 来处理,可防范少量 syn ***,默认为 0 ,表示关闭;

  37. 2.net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将 time-wait sockets 重新用于新的 tcp 连接,默认为 0 ,表示关闭;
  38. 3.net.ipv4.tcp_tw_recycle = 1 表示开启 tcp 连接中 time-wait sockets 的快速回收,默认为 0 ,表示关闭。
  39. 4.net.ipv4.tcp_fin_timeout 修改系靳默认的 timeout 时间



  40. 经过上面的设置后,发现网站time_wait连接数慢慢减少,网站速度也快多了!

  41. 如果以上配置调优后性能还不理想,可继续修改一下配置:

  42. vi /etc/sysctl.conf

  43. net.ipv4.tcp_keepalive_time = 1200 #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。

  44. net.ipv4.ip_local_port_range = 1024 65000 #表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。

  45. net.ipv4.tcp_max_syn_backlog = 8192 #表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。

  46. net.ipv4.tcp_max_tw_buckets = 5000 #表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。
  47. 默认为180000,改为5000。
  48. 对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于 Squid,效果却不大。此项参数可以控
复制代码
windows下:
  1. 以Administrator用户登录Windows操作系统。
  2. 修改TCP回收时间。
  3. 在Windows开始菜单中,单击“运行”。
  4. 在“运行”对话框中,输入“regedit”后按“Enter”打开注册表编辑器。
  5. 在“注册表编辑器”中打开“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters”路径。
  6. 在“编辑”菜单中,选择“新建 > DWORD (32-位)值”,输入名称“TcpTimedWaitDelay”。
  7. 右键单击TcpTimedWaitDelay,选择“修改”。
  8. 在“编辑 DWORD(32位)值”对话框的“基数”区域中,选择十进制值为“30”,并“确定”。
  9. 关闭注册表编辑器。
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|分享学习  

GMT+8, 2024-5-17 11:40 , Processed in 0.045548 second(s), 8 queries , File On.

声明:本站严禁任何人以任何形式发表违法言论!

本站内容由网友原创或转载,如果侵犯了您的合法权益,请及时联系处理!© 2017 zamxqun@163.com

皖公网安备 34010402700634号

皖ICP备17017002号-1

快速回复 返回顶部 返回列表