过去我们公司使用的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
bannerAds