linux内核优化

调整linux的最大文件打开数和用户进程数

ulimit -SHn 65535                  # 临时打开最大文件描述符(句柄数)

ulimit  -SHu   10240                             #临时打开最大进程数

打开/etc/security/limits.conf,在最后一行添加如下命令:

* soft nofile 65535

* hard nofile 65535

* soft nproc 10240

* hard nproc 10240

#Linux 6.4之后,如果只修改了该文件中的nproc,那么其他非root用户对应的max_user_processes并不会改变,仍然是1024,这个是因为受到了下面这个文件的影响,改成和nproc 10240一样

vim /etc/security/limits.d/90-nproc.conf

 

 

#默认值是128,这个参数用于调节系统同时发起的TCP连接数,在高并发的请求中,默认的值可能会导致链接超时或重传,因此需要结合并发请求数来调节此值

net.core.somaxconn = 16384 

#当网卡接收数据包的速度大于内核处理速度时,会有一个列队保存这些数据包。这个参数表示该列队的最大值

net.core.netdev_max_backlog = 8096

 

#开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN Flood(洪水攻击)攻击

net.ipv4.tcp_syncookies = 1

#表示SYN 队列的长度,默认1024,建议加大队列的长度为8192或更多,就能容纳更多等待连接的网络连接数量,该参数为服务器端用于记录那些尚未接受到客户端确认信息的连接请求最大值

net.ipv4.tcp_max_syn_backlog = 16384

net.ipv4.tcp_synack_retries=2   #SYN-ACK握手状态重试次数,默认5

#设置允许系统打开的系统范围,即用于向外连接的端口范围

net.ipv4.ip_local_port_range = 4000 65000

# TCP失败重传次数,默认是15,减少次数可释放内核资源

net.ipv4.tcp_tw_recycle = 1

#允许将TIME-WAIT sockets 重新用于新的TCP连接提示:reuse和recycle这两个参数是为了防止生产环境下的web、squid等业务服务器time_wait网络状态数量过多设置的

net.ipv4.tcp_tw_reuse = 1

#用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上,如果超过这个数值,孤立连接将立即被复位并打印出警告信息,这个限制只是为了防止简单的DOS攻击,不能过分依靠这个限制甚至人为减少这个值,更多的情况是增加这个值

net.ipv4.tcp_max_orphans = 16384

# 表示系统同时保持 TIME_WAIT套接字的最大数量,如果超出这个数值,TIME_WAIT套接字将立刻清楚并打印警告信息,默认为180000,对于ApacheNginx等服务器可以将其调低一点,如改为5000-30000,此项参数可以控制TIME_WAIT套接字的最大数量,编码Squit服务器被大量的TIME_WAIT套接字拖死,过多的TIME_WAIT套接字会使Web服务器变慢。

net.ipv4.tcp_max_tw_buckets = 5000

net.ipv4.tcp_fin_timeout = 2     #修改FIN-WAIT-2保存状态时间,默认是60秒

#当keepalive启动时,TCP发送keepalive消息的频度;默认是2小时,将其设置为10分钟,可以更快的清理无效链接

ner.ipv4.tcp_keepalive_time = 600

 

----查看当前进程打开了多少句柄数

# lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more

其中第一列是打开的句柄数,第二列是进程ID

TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)或插口。

套接字用(IP地址:端口号)表示。

套接字中缓冲区

原文地址:https://www.cnblogs.com/pengrj/p/9050185.html