常用Linux内核参数说明
内核参数说明
参考: https://help.aliyun.com/document_detail/41334.html#h2–linux-
sysctl命令常用参数
sysctl
命令能时动态地修改内核参数;
sysctl
命令常用参数:
https://www.linuxcool.com/sysctl
https://wangchujiang.com/linux-command/c/sysctl.html
禁用swap
https://blog.csdn.net/omaidb/article/details/106674391
# 禁用用swap
vm.swappiness = 0
关闭OOM机制
参考: https://wangshangyou.com/linux-oom.html
# 开启OOM,进程瞬间占满内存
## 默认为0表示开启OOM,开启后会自动kill掉瞬间占满内存的进程
## 1表示关闭
echo "
# 关闭OOM
vm.panic_on_oom = 1 " >> /etc/sysctl.conf
热生效
# 立即关闭OOM机制
sysctl -w vm.panic_on_oom=1
# 等价于
echo 1>/proc/sys/vm/panic_on_oom
调高内存预留水位线
自动释放cache,防止oom
我之前遇到过程序去请求内存资源,但是cache
把剩余内存
打满且没释放导致请求内存失败
,直接oom
;
os有个配置,就是去释放cache
,叫
echo "
# 自动释放cache防止oom
vm.overcommit_memory=1" >> /etc/sysctl.conf
# 热生效
echo 1 >/proc/sys/vm/overcommit_memory
不检查物理内存是否够用
RHEL管理内存不足状态
https://www.modb.pro/db/25985
值为0
:内存不足时,启动 OOM killer
。
值为1
:内存不足时,有可能会触发 kernel panic(系统重启)
,也有可能启动 OOM killer
。
值为2
:内存不足时,表示强制触发 kernel panic
,内核崩溃GG(系统重启)
。
# 不检查物理内存是否够用
vm.overcommit_memory=1
同一用户同时可以添加的watch数目
https://www.cnblogs.com/cheyunhua/p/14325314.html
# 同一用户同时可以添加的watch数目
## 默认值8192
fs.inotify.max_user_watches = 524288
# 防止容器数量增加导致fs.inotify.max_user_instances超过限制
# 默认128
fs.inotify.max_user_instances = 8192
开启TCP低延时模式
启TCP小缓冲区
功能,并设置TCP连接为低延迟
模式。这有助于减少延迟
和提高网络性能
。
# 低延迟模式
net.ipv4.tcp_low_latency = 1
# 连接结束时保存TCP连接信息,能提高性能,但会导致无法进行网络分析
net.ipv4.tcp_no_metrics_save = 1
开启快速tcp
在TCP第一次握手
时就传输数据。
# 开启快速tcp
net.ipv4.tcp_fastopen = 3
# 热生效
echo 3 > /proc/sys/net/ipv4/tcp_fastopen
禁用IPV6
https://help.aliyun.com/document_detail/162676.htm
echo "
# 关闭IPV6
## 1为开启;0为关闭
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf
执行sysctl -p
使内核配置生效
# 热生效
## 1为开启‘禁用IPV6’;0为关闭‘禁用IPV6’
echo 1>/proc/sys/net/ipv6/conf/all/disable_ipv6
echo 1>/proc/sys/net/ipv6/conf/default/disable_ipv6
echo 1>/proc/sys/net/ipv6/conf/lo/disable_ipv6
禁止ping
echo "
# 禁ping
## 1为开启禁ping;0为关闭禁ping
net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
执行sysctl -p
使内核配置生效
0
为允许ping(系统默认
值),1
为禁ping.
# 热生效
## 1为开启禁ping;0为关闭禁ping
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
内核开启数据包转发功能
echo "
# 开启内核开启数据包转发
## 1为开启;0为关闭
net.ipv4.ip_forward = 1
net.ipv4.conf.all.proxy_arp = 1" >> /etc/sysctl.conf && sysctl -p
执行sysctl -p
使内核配置生效
# 热生效
## 1为开启;0为关闭
echo 1 >/proc/sys/net/ipv4/ip_forward
echo 1 >/proc/sys/net/ipv4/conf/all/proxy_arp
禁用TCP延迟确认
https://www.jianshu.com/p/f863e189aadf
# 精确时间戳,能提高网络性能,同时增加资源开销
net.ipv4.tcp_timestamps = 1
# 减少段丢失时需要重传的段数目
net.ipv4.tcp_sack = 1
# 对sack的改进,能够检测不必要的重传
net.ipv4.tcp_dsack = 1
# 允许TCP/IP栈适应在高吞吐量情况下低延时的情况,这个选项应该禁用。
net.ipv4.tcp_low_latency = 0
# 设置TCP延迟确认的最小延迟时间为0毫秒(默认40ms)
net.ipv4.tcp_delack_min = 0
防止TCP不回包
https://blog.csdn.net/chenlycly/article/details/80369408
# 快速重用(回收)处于TIME_WAIT状态的tcp连接
## 1为开启;0为关闭
sysctl -w net.ipv4.tcp_tw_recycle=0
# 可能没这个参数
# 发送数据时,将一个timestamp(表示发送时间)放在包里面
sysctl -w net.ipv4.tcp_timestamps=0
# 热生效
echo "0" > /proc/sys/net/ipv4/tcp_tw_recycle
# 可能没这个文件
echo "0" > /proc/sys/net/ipv4/tcp_timestamps
解除Linux进程数和线程数及文件打开数
允许开启的线程数量
# 加大允许开启的线程数量
vm.max_map_count=262144
系统中可同时打开的文件数
# 系统中可同时打开的最大文件数目
fs.file-max=52706963
# 单个进程可分配的最大文件数
fs.nr_open=52706963
# 查看系统中可同时打开的最大文件数
sysctl fs.file-max
# 查看单进程可打开的最大文件数
sysctl fs.nr_open
限制用户最大进程数和最大文件打开数限制
针对用户(*表示所有用户) | 限制方法 | 限制类型 | 限制的值 |
---|---|---|---|
* 代表针对所有用户 | soft : 软限制 | noproc 是最大进程数 | 11000 |
* | hard : 硬限制 | nofile 是最大文件打开数 | 4100 |
* | - 为soft 和hard 全部限制 | noproc | 1100 |
* | - | nofile | 4100 |
os
的openfile
值,建议加大。
配置文件在/etc/security/limits.conf
# 针对所有用户软限制最大进程数
* soft noproc 11000
# 针对所有用户硬限制最大进程数
* hard noproc 11000
# 针对所有用户软限制最大文件打开数
* soft nofile 4100
# 针对所有用户硬限制最大文件打开数
* hard nofile 4100
软硬一起限制
# *代表针对所有用户,noproc是最大进程数
* - noproc 11000
# *代表针对所有用户,nofile是最大文件打开数
* - nofile 4100
Centos7服务器优化脚本
参考: CentOS7一键优化安装脚本