阿里云 Linux 内核优化实战(sysctl.conf 和 ulimits )

简介: 一、sysctl.conf优化Linux系统内核参数的配置文件为 /etc/sysctl.conf 和 /etc/sysctl.d/ 目录。其读取顺序为: /etc/sysctl.d/ 下面的文件按照字母排序;然后读取 /etc/sysctl.conf 。

一、sysctl.conf优化
Linux系统内核参数的配置文件为 /etc/sysctl.conf 和 /etc/sysctl.d/ 目录。其读取顺序为:

/etc/sysctl.d/ 下面的文件按照字母排序;然后读取 /etc/sysctl.conf 。

 

一般所有对系统的修改参数放在 /etc/sysctl.d/ 目录,系统原有的 sysctl.conf 文件保存一些更加基础的配置。

sysctl.conf 可优化参数如下:

fs.file-max = 2097152
 
 
# 减少交换内存使用,默认60,建议10-30
vm.swappiness = 30
 
 
# 脏数据的比例和处理,根据场景不同设置,
# 参考 https://lonesysadmin.net/2013/12/22/better-linux-disk-caching-performance-vm-dirty_ratio/
# 如果是数据库服务器,希望数据能够尽快安全写入,可降低内存缓存比例
# vm.dirty_background_ratio = 5
# vm.dirty_ratio = 10
 
 
# 如果是业务服务器,对数据安全写入无要求,可加大内存缓存比例
# vm.dirty_background_ratio = 50
# vm.dirty_ratio = 80
 
 
# 设置为1,内核允许分配所有的物理内存,Redis常用
vm.overcommit_memory = 1
 
 
# 系统拥有的内存数,ElasticSearch启动必备
vm.max_map_count = 262144
 
 
# 设置为1
net.ipv4.tcp_no_metrics_save = 1
 
 
# 禁用 sysrq 功能
kernel.sysrq = 0
 
 
# 控制 core 文件的文件名中是否添加 pid 作为扩展
kernel.core_uses_pid = 1
 
 
# 设置为1,防止 SYNC FLOOD 攻击
net.ipv4.tcp_syncookies = 1
 
 
# 消息队列的最大消息大小,默认8k,建议64kb
kernel.msgmax = 65536
# 消息队列存放消息的总字节数
kernel.msgmnb = 163840
 
 
# TIME_WAIT socket的最大数目,不宜太大或者太小,nginx反向代理必备
net.ipv4.tcp_max_tw_buckets = 50000
# 打开 SACK 选项,设置为1
net.ipv4.tcp_sack = 1
# 激活窗口扩充因子,支持64kb以上数据传输
net.ipv4.tcp_window_scaling = 1
 
 
# TCP 缓冲区内存,连接数达到非常高时候需要配置好
net.ipv4.tcp_mem = 786432 2097152 3145728  
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
 
 
# socket缓冲区默认值和最大值
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
 
 
# ACCEPT等待队列长度,适当,太大了堆积也无用 
net.core.netdev_max_backlog = 65535
 
 
# 允许最大并发连接数,重要
net.core.somaxconn = 65535
 
 
# 不属于任何进程的socket数目,不宜太大,防止攻击
net.ipv4.tcp_max_orphans = 65535
 
 
# SYNC等待队列长度,适当,太大了排队也没用
net.ipv4.tcp_max_syn_backlog = 65535
 
 
# 禁用timestamp,重要,高并发下设置为0
net.ipv4.tcp_timestamps = 0
 
 
# 发送 SYNC+ACK 的重试次数,不宜太大,5以内
net.ipv4.tcp_synack_retries = 1
# 发送SYNC的重试次数,不宜太大,5以内
net.ipv4.tcp_syn_retries = 1
 
 
# 允许回收TCP连接,重要,必须为1
net.ipv4.tcp_tw_recycle = 1
 
 
# 允许重用TCP连接,重要,必须为1
net.ipv4.tcp_tw_reuse = 1
 
 
# 服务端主动关闭后,客户端释放连接的超时,重要,<30
net.ipv4.tcp_fin_timeout = 5
 
 
# 允许TCP保持的空闲keepalive时长,不需要太长
net.ipv4.tcp_keepalive_time = 30
 
 
# 系统作为TCP客户端连接自动使用的端口(start,end),可发起并发连接数为end-start
net.ipv4.ip_local_port_range = 10240 65535

运行 sysctl -p 重载配置。

 

【tips】常用指令:sysctl -a |grep <参数名> 可查询当前参数值

 

示例:

执行

可能返回如下查询结果

  net.ipv4.tcp_max_syn_backlog = 1024

内核优化脚本

​# 禁用大内存页面 Transparent Huge Pages for Redis/MongoDB ,默认是 always
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled

 
二、ulimits 优化
设置打开文件的最大数量(文件描述符),按需修改最大数值。

编辑 /etc/security/limits.conf ,添加或替换下面几行代码到文件结尾:

root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

断开 SSH 并重新 SSH 连接服务器,输入下面的命令检查是否生效:

ulimit -a
对于进程来说,重启就能使其生效。

目录
相关文章
|
6天前
|
安全 Linux 编译器
探索Linux内核的奥秘:从零构建操作系统####
本文旨在通过深入浅出的方式,带领读者踏上一段从零开始构建简化版Linux操作系统的旅程。我们将避开复杂的技术细节,以通俗易懂的语言,逐步揭开Linux内核的神秘面纱,探讨其工作原理、核心组件及如何通过实践加深理解。这既是一次对操作系统原理的深刻洞察,也是一场激发创新思维与实践能力的冒险。 ####
|
9天前
|
网络协议 Linux 调度
深入探索Linux操作系统的心脏:内核与系统调用####
本文旨在揭开Linux操作系统中最为核心的部分——内核与系统调用的神秘面纱,通过生动形象的语言和比喻,让读者仿佛踏上了一段奇妙的旅程,从宏观到微观,逐步深入了解这两个关键组件如何协同工作,支撑起整个操作系统的运行。不同于传统的技术解析,本文将以故事化的方式,带领读者领略Linux内核的精妙设计与系统调用的魅力所在,即便是对技术细节不甚了解的读者也能轻松享受这次知识之旅。 ####
|
5天前
|
缓存 算法 安全
深入理解Linux操作系统的心脏:内核与系统调用####
【10月更文挑战第20天】 本文将带你探索Linux操作系统的核心——其强大的内核和高效的系统调用机制。通过深入浅出的解释,我们将揭示这些技术是如何协同工作以支撑起整个系统的运行,同时也会触及一些常见的误解和背后的哲学思想。无论你是开发者、系统管理员还是普通用户,了解这些基础知识都将有助于你更好地利用Linux的强大功能。 ####
13 1
|
6天前
|
缓存 编解码 监控
深入探索Linux内核调度机制的奥秘###
【10月更文挑战第19天】 本文旨在以通俗易懂的语言,深入浅出地剖析Linux操作系统内核中的进程调度机制,揭示其背后的设计哲学与实现策略。我们将从基础概念入手,逐步揭开Linux调度策略的神秘面纱,探讨其如何高效、公平地管理系统资源,以及这些机制对系统性能和用户体验的影响。通过本文,您将获得关于Linux调度机制的全新视角,理解其在日常计算中扮演的关键角色。 ###
25 1
|
10天前
|
监控 Linux 云计算
Linux操作系统在云计算环境中的实践与优化###
【10月更文挑战第16天】 本文探讨了Linux操作系统在云计算环境中的应用实践,重点分析了其在稳定性、安全性和高效性方面的优势。通过具体案例,阐述了Linux如何支持虚拟化技术、实现资源高效分配以及与其他开源技术的无缝集成。文章还提供了针对Linux系统在云计算中的优化建议,包括内核参数调整、文件系统选择和性能监控工具的应用,旨在帮助读者更好地理解和应用Linux于云计算场景。 ###
13 3
|
13天前
|
网络协议 Linux 芯片
Linux 内核 6.11 RC6 发布!
【10月更文挑战第12天】
76 0
Linux 内核 6.11 RC6 发布!
|
23天前
|
弹性计算 Linux 数据库
阿里云国际版如何迁移Linux云服务器系统盘中的数据
阿里云国际版如何迁移Linux云服务器系统盘中的数据
|
23天前
|
弹性计算 网络协议 Ubuntu
如何在阿里云国际版Linux云服务器中自定义配置DNS
如何在阿里云国际版Linux云服务器中自定义配置DNS
|
23天前
|
网络协议 安全 Linux
阿里云国际上如何检查 Linux 上正在使用哪些端口
阿里云国际上如何检查 Linux 上正在使用哪些端口