当前位置: 首页 > news >正文

Linux操作系统性能优化

Linux操作系统性能优化

  • 1. TCP连接出现大量ESTABLISHED连接解决方法

1. TCP连接出现大量ESTABLISHED连接解决方法

   TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不 会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中,最值得 注意的状态有两个:CLOSE_WAITTIME_WAIT
   ● CLOSE_WAIT
   对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭
   ● TIME_WAIT
   我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分 段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情 况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。

   查看网络连接数:

# netstat -an |grep xx |wc -l             查看某个/特定ip的连接数
# netstat -an |grep TIME_WAIT|wc -l       查看连接数等待time_wait状态连接数
# netstat -an |grep ESTABLISHED |wc -l    查看建立稳定连接数量

   查看不同状态的连接数数量:

# netstat -an | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'LISTEN 8ESTABLISHED 2400FIN_WAIT1 2TIME_WAIT 6000

   查看每个IP跟服务器建立的连接数:

# netstat -nat|grep "tcp"|awk ' {print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn444 10.71.177.123102 100.11.71.123101 49.14.55.132

   查看每个IP建立的ESTABLISHED/TIME_OUT状态的连接数:

# netstat -nat|grep ESTABLISHED|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn24 103.56.195.1719 45.116.147.18618 103.56.195.1817 45.116.147.178

   怎么解决大量TIME_WAIT?
   通过调整内核参数:

vim /etc/sysctl.conf
#编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

   然后执行/sbin/sysctl -p让参数生效
   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,表示关闭;
   net.ipv4.tcp_fin_timeout=30 :修改系統默认的 TIMEOUT 时间。

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

vi /etc/sysctl.confnet.ipv4.tcp_keepalive_time = 1200 
# 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。net.ipv4.ip_local_port_range = 1024 65000 
# 表示用于向外连接的端口范围。缺省情况下很小:3276861000,改为102465000。net.ipv4.tcp_max_syn_backlog = 8192 
# 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。net.ipv4.tcp_max_tw_buckets = 5000 
# 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。
# 默认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量。
http://www.lryc.cn/news/497475.html

相关文章:

  • iOS与Windows间传文件
  • 在数据库设计中同步冗余字段的思考与实践
  • Qt 带数据库功能的项目部署之后,数据库无法打开问题解决方法
  • 汇编语言学习-二
  • 【嘟嘟早教卡】 小程序源码分享带后台管理
  • JavaEE-经典多线程样例
  • 从 HTML 到 CSS:开启网页样式之旅(五)—— CSS盒子模型
  • 数据分析(一): 掌握STDF 掌握金钥匙-码农切入半导体的捷径
  • HCIA-openGauss_1_4基本功能介绍
  • 医学临床机器学习中算法公平性与偏差控制简析
  • Leetcode打卡:棋盘上有效移动组合的数目
  • 生产看板到底在看什么?
  • 12,攻防世界simple_php
  • 解决Jupyter Notebook无法转化为Pdf的问题(基于Typora非常实用)
  • 齐护机器人ModbusRTU RS485转TTL通信模块与ESP32 Arduino通信可Mixly的图形化编程Scratch图形化编程
  • python学习笔记15 python中的类
  • PMP–一、二、三模、冲刺–分类–10.沟通管理
  • android-studio开发第一个项目,并在设备上调试
  • springboot/ssm线上教育培训办公系统Java代码web项目在线课程作业源码
  • Spring 依赖 详解
  • 千益畅行,旅游卡有些什么优势?
  • Ubuntu24 cgroupv2导致rancher(k3s)启动失败的处理
  • 学习CSS第二天
  • 2021数学分析【南昌大学】
  • 单端和差分信号的接线法
  • 力扣-图论-2【算法学习day.52】
  • MySQL如何区分幻读和不可重复读
  • 界面控件Syncfusion Essential Studio®现在已完全支持 .NET 9
  • openEuler安装lsb_release
  • 统计数字字符个数