过去我们公司使用的sysctl已经进一步改良
我在商用环境中所配置的设置。
因为全部都是自己研究和设置的,
所以我会公开包括参考的网站在内的所有内容。
基于CentOS6进行设想。
在此之后,请另行查阅3.0或更新版本内核的功能。
请参考《CentOS用户在Ubuntu 16.04上搭建MySQL并陷入困境(完全调优版)》,进行sysctl以外的设置。
不管服务器,都可以进行设置。
禁用IPv6
如何禁用IPv6?- 常见问题/ CentOS6 – CentOS Wiki
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
尽力不进行互换
新内核中OOM和vm.swappiness=0的关系;导致MySQL服务器进程终止。
vm.swappiness = 1
从内核4.6版本开始,可能没有问题,但目前未调查。
控制内存使用量
关于vm.overcommit_memory的内容
vm.overcommit_memory=1
只要能够有效控制,选择1是最好的。
如果有多个应用在运行,不得不选择2。
TCP重传次数
关于Web广告基础设施(第5部分):Linux的TCP重传算法和移动网络的不兼容性 | 多脚.com
net.ipv4.tcp_orphan_retries = 3
保持连接前的通信状况确认
高性能的网络浏览-爱与勇气与罐装啤酒
net.ipv4.tcp_slow_start_after_idle = 0
SYN洪泛攻击防御措施
听觉背景 【3.6】-Linux内核笔记
net.ipv4.tcp_syncookies = 1
没有对手便变成了ESTABLISHED。
TCP端口已成为ESTABLISHED状态,尽管没有对方存在 – @tmtms的笔记
net.ipv4.tcp_abort_on_overflow=1
禁用TCP选项
了,为了解其危险性
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
也许将Oracle的设置直接放入会比较好
安装Oracle数据库软件
kernel.sem = 250 32000 100 128
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
fs.file-max = 681574
如果使用NoSQL或者有1Gbps以上的流量,可以选择基于Cassandra进行开发。
# Apache Cassandra的推荐生产设置
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.optmem_max = 40960
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
vm.max_map_count = 1048575
其他设置
@IT:在Linux上有一些无法显示的网站。
net.ipv4.tcp_ecn = 1
不太为人所知的设置- Linux高级路由和流量控制指南
net.ipv4.tcp_rfc1337 = 1
Linux 在套接字功能方面的改进
net.ipv4.tcp_sack = 1
net.ipv4.tcp_fack = 1
发送使用TCP协议的端口范围
#NAT、リバースプロクシ用
#net.ipv4.ip_local_port_range = 1024 65000
最好根据服务器类型进行配置更改。
设置TCP的重传次数
根据故障转移所需的时间进行设计,如果不需要故障转移,则最多允许2次。
# Linux的TCP SYN重传间隔的初始值已从3秒更改为1秒- 来自曾经驾驶RX-7的匆忙日子
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_synack_retries = 2
保持连接的设置
关闭CLOSE_WAIT会话的方法-福上广的博客
#フロント用サーバ(PC)
#net.ipv4.tcp_keepalive_time = 5
#net.ipv4.tcp_keepalive_intvl = 2
#net.ipv4.tcp_keepalive_probes = 5
#フロント用サーバ(mobile)
#net.ipv4.tcp_keepalive_time = 10
#net.ipv4.tcp_keepalive_intvl = 2
#net.ipv4.tcp_keepalive_probes = 10
#それ以外のサーバ
#net.ipv4.tcp_keepalive_time = 60
#net.ipv4.tcp_keepalive_intvl = 2
#net.ipv4.tcp_keepalive_probes = 60
强制断开连接在FIN上。
都是因为TIME_WAIT的问题!- Qiita
net.ipv4.tcp_fin_timeout = 30
高负荷时的运行稳定
# DSAS开发者的房间:如何找到高负荷网站的瓶颈
# 研究Linux的TCP/IP实现 – Nyant的日记
net.core.netdev_max_backlog = 4096
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 4096
注重吞吐量(未经验证)
在Linux中改进了套接字功能。
net.ipv4.tcp_low_latency = 0
如果是涉及到磁盘性能的中间件,在调整上可能会产生效果(未经验证的)。
更好的Linux磁盘缓存和性能,使用vm.dirty_ratio。
#vm.dirty_background_ratio = 5
#vm.dirty_ratio = 80