2022-07-24 11:21:10
24 07 2022
摘要:Linux内核调优,系统参数的配置

ulimit -n 命令可以查看linux系统里打开文件描述符的最大值

1、调整打开文件描述符的大小

cat >>/etc/security/limits.conf<<EOF
* soft nofile 102400
* hard nofile 102400
* soft nproc 102400
* hard nproc 102400
root soft nproc 102400
root hard nproc 102400
EOF

2、调整内容相关部分参数


cat >>/etc/sysctl.conf<<EOF
#接收套接字缓冲区大小的默认值(以字节为单位)。256k
net.core.rmem_default = 262144
#接收套接字缓冲区大小的最大值(以字节为单位)。16m
net.core.rmem_max = 16777216
#发送套接字缓冲区大小的默认值(以字节为单位)。256k
net.core.wmem_default = 262144
#发送套接字缓冲区大小的最大值(以字节为单位)。16m
net.core.wmem_max = 16777216
#减少处于FIN-WAIT-2连接状态的时间,使系统可以处理更多的连接。
net.ipv4.tcp_fin_timeout = 2
# #表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭
net.ipv4.tcp_tw_reuse = 1
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
#net.ipv4.tcp_tw_recycle = 1 #这个已经被去除了
#表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭
net.ipv4.tcp_syncookies = 1
#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.tcp_keepalive_time = 1200
#探测消息未获得响应时,重发该消息的间隔时间(秒)。系统默认75秒。
net.ipv4.tcp_keepalive_intvl = 30
#在认定连接失效之前,发送多少个TCP的keepalive探测包。系统默认值是9。这个值乘以tcp_keepalive_intvl之后决定了,一个连接发送了keepalive探测包之后可以有多少时间没有回应。
net.ipv4.tcp_keepalive_probes = 3
#表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
net.ipv4.ip_local_port_range = 4000 65000
#表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_syn_backlog = 8192
#表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
#表示在内核放弃建立连接之前发送SYN包的数量。
net.ipv4.tcp_syn_retries = 1
#表示系统允许SYN连接的重试次数。为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK包。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。
net.ipv4.tcp_synack_retries = 1
#用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制。
net.core.somaxconn = 16384
#当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包。这个参数表示该队列的最大值。
net.core.netdev_max_backlog = 16384
#系统所能处理不属于任何进程的TCP sockets最大数量。假如超过这个数量,那么不属于任何进程的连接会被立即reset,并同时显示警告信息。之所以要设定这个限制﹐纯粹为了抵御那些简单的 DoS 攻击﹐千万不要依赖这个或是人为的降低这个限制,更应该增加这个值(如果增加了内存之后)。每个孤儿套接字最多能够吃掉你64K不可交换的内存。
net.ipv4.tcp_max_orphans = 16384
net.ipv4.ip_forward = 1
#表示尽量使用内存,减少使用磁盘swap交换分区,内存速度明显高于磁盘一个数量级。
vm.swappiness = 0
EOF

3、调整nginx的配置参数

events {
worker_connections 8768;#连接数
use epoll;#使用epoll
# multi_accept on;
}

gzip on; #这好像影响ETAG
gzip_min_length 1000;
# gzip_vary on;
# gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
# gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

 

 

延伸阅读
  1. 上一篇:JDK
  2. 下一篇:Nginx
发表评论