centos7 系统内核、网络等优化(适用高并发)
发布时间:2020-9-22 9:57:13 浏览量:1707 【字体:大 中 小】
一、ssh连接优化
# 禁用dns解析
Port 52113 #改默认端口为52113 ,根据需求设定
# PermitRootLogin no #禁止root用户登录,根据需求设定
PermitEmptyPasswords no #禁止空密码登录
UseDNS no #不使用DNS解析,可以加快访问速度
GSSAPIAuthentication no # 是一套类似Kerberos 5的通用网络安全系统接口。该接口是对各种不同的客户端服务器安全机制的封装,以消除安全接口的不同,降低编程难度。但该接口在目标机器无域名解析时会有问题
二、最大文件描述符
ulimit -SHn 65535
vim /etc/security/limits.conf //在最后添加
# ulimit优化
* soft nofile 65536
* hard nofile 65536
三、内核优化
# vim /etc/sysctl.conf
#表示单个进程较大可以打开的句柄数
fs.file-max = 1000000
#关闭ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
# 避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts = 1
# 开启恶意icmp错误消息保护
net.ipv4.icmp_ignore_bogus_error_responses = 11
#决定检查过期多久邻居条目
net.ipv4.neigh.default.gc_stale_time=120
#使用arp_announce / arp_ignore解决ARP映射问题
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_announce=2 # 避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts = 1 # 开启恶意icmp错误消息保护
net.ipv4.icmp_ignore_bogus_error_responses = 1
#处理无源路由的包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
#core文件名中添加pid作为扩展名
kernel.core_uses_pid = 1
#修改消息队列长度
kernel.msgmnb = 65536
kernel.msgmax = 65536
#开启反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
#设置最大内存共享段大小bytes
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
#表示操作系统允许TIME_WAIT套接字数量的较大值,如超过此值,TIME_WAIT套接字将立刻被清除并打印警告信息,默认为180000,过多的TIME_WAIT套接字会使Web服务器变慢
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
#定义了TCP接受缓存的最小值、默认值、较大值
net.ipv4.tcp_rmem = 4096 87380 4194304
#定义TCP发送缓存的最小值、默认值、较大值
net.ipv4.tcp_wmem = 4096 16384 4194304
#表示内核套接字发送缓存区默认大小
net.core.wmem_default = 8388608
#表示内核套接字接受缓存区默认大小
net.core.rmem_default = 8388608
#表示内核套接字接受缓存区较大大小
net.core.rmem_max = 16777216
#表示内核套接字发送缓存区较大大小
net.core.wmem_max = 16777216
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,会有一个列队保存这些数据包,允许送到队列的数据包的最大值。
net.core.netdev_max_backlog = 32768
#web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值。这个参数用于调节系统同时发起的TCP连接数,在高并发的请求中,默认的值可能会导致链接超时或者重传,因此需要结合高并发请求数来调节此值。
net.core.somaxconn = 32768
#选项用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤立链接将立即被复位并输出警告信息。这个限制指示为了防止简单的DOS攻击,不用过分依靠这个限制甚至认为的减小这个值,更多的情况是增加这个值
net.ipv4.tcp_max_orphans = 3276800
#未收到客户端确认信息的连接请求的最大值
#这个参数表示TCP三次握手建立阶段接受SYN请求列队的较大长度,默认1024,将其设置的大一些可使出现Nginx繁忙来不及accept新连接时,Linux不至于丢失客户端发起的链接请求
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
#内核放弃建立连接之前发送SYNACK 包的数量
net.ipv4.tcp_synack_retries = 1
#内核放弃建立连接之前发送SYN 包的数量
net.ipv4.tcp_syn_retries = 1
#启用timewait 快速回收
net.ipv4.tcp_tw_recycle = 1
#开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接,#参数设置为 1 ,表示允许将TIME_WAIT状态的socket重新用于新的TCP链接,这对于服务器来说意义重大,因为总有大量TIME_WAIT状态的链接存在
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
#当服务器主动关闭链接时,socket保持在FIN_WAIT_2状态的较大时间
net.ipv4.tcp_fin_timeout = 1
# 开启SYN洪水攻击保护(防范少量SYN攻击)
net.ipv4.tcp_syncookies = 1
#允许系统打开的端口范围,定义UDP和TCP链接的本地端口的取值范围
net.ipv4.ip_local_port_range = 1024 65000
#当keepalive启动时,TCP发送keepalive消息的频度;默认是2小时,将其设置为10分钟,可更快的清理无效链接
net.ipv4.tcp_keepalive_time = 600
#縮短established的超時時間,####如果可能的话,建议关闭nf_conntrack,设置NOTRACK或者调大数值。
#net.netfilter.nf_conntrack_tcp_timeout_established = 180
#CONNTRACK_MAX 允许的最大跟踪连接条目,是在内核内存中netfilter可以同时处理的“任务”
#net.netfilter.nf_conntrack_max = 1048576
#net.nf_conntrack_max = 1048576