用作负载均衡服务器的内核优化
相关的系统参数优化:
默认的Linux内核参数考虑的是最通用场景,不符合用于支持高并发访问的Web服务器的定义,根据业务特点来进行调整,当Nginx作为静态web内容服务器、反向代理或者提供压缩服务器的服务器时,内核参数的调整都是不同的,此处针对最通用的、使Nginx支持更多并发请求的TCP网络参数做简单的配置
优化内核参数:
修改/etc/sysctl.conf
文件、网络优化:
fs.file-max=1000000 单个进程较最大可以打开的句柄数
net.ipv4.tcp_tw_reuse=1 1为允许将time_wait状态的socket重新用于新的tcp链接(对服务器来说意义重大,因为总有大量的time_wait状态的连接存在,现在可以复用)
net.ipv4.tcp_keepalive_time=600 持久连接时,tcp发送长链接消息的频度,默认2h,设置为10m可更快清理无效连接
net.ipv4.tcp_fin_timeout=30 当服务器主动关闭连接时,socket保持在fin_wait_2的状态的较大时间
net.ipv4.tcp_max_tw_buckets=5000 操作系统允许time_wait套接字数量的较大值,当超过此值,time_wait套接字将立刻被清除并打印警告信息,默认8000,过多的time_wait套接字会使web服务器变慢
net.ipv4.ip_local_port_range=1024 65000 定义udp和tcp连接的本地随机端口取值范围
net.ipv4.tcp_rmem=10240 87380 12582912 定义tcp接收缓存的最小值、默认值、最大值
net.ipv4.tcp_wmem=10240 87380 12582912 定义tcp发送缓存的最小值、默认值、最大值
net.ipv4.tcp_max_syn_backlog=8192 tcp三次握手建立阶段接受syn请求队列的最大长度,默认1024。设置大一些可使:出现nginx繁忙来不及accept新连接时,linux不至于丢失客户端发起的连接请求
net.ipv4.tcp_tw_recycle=1 设置启用time_wait快速回收
net.core.netdev_max_backlog=8096 当网卡接收数据包的速度大于内核处理速度时,会有一个消息对联保存这些数据包,这个参数表示该队列的较大值
net.core.somaxconn=65535 tcp全连接的数量
内核内存优化:
根据业务逻辑、硬件调整
net.core.rmem_default=6291456 内核套接字接收缓存区默认大小
net.core.rmem_max=12582912 内核套接字接收缓存区的最大值
net.core.wmem_default=6291456 内核套接字发送缓存区默认大小
net.core.wmem_max=12582912 内核套接字发送缓存区最大值
安全防护:
net.ipv4.tcp_syncookies=1 与性性能无关,用于解决tcp的syn攻击
net.ipv4.tcp_max_orphans=262114 设置系统中最多有多少个tcp套接字不被关联到任何一个用户文件句柄上。如果超过此值,孤立连接将立即被复位,并输出警告信息。(此指令能简单防止dos攻击,不用过分依靠这个限制,或者减小此值,更多情况是更加这个值)
PAM资源限制优化:
修改/etc/security/limits.conf
vim /etc/security/limits.conf
* - core unlimited
* - nproc 1000000
* - nofile 1000000
* - memlock 32000
* - msgqueue 8192000

浙公网安备 33010602011771号