sysctl.conf 参数

99ANYc3cd6
预计阅读时长 13 分钟
位置: 首页 参数 正文

什么是 sysctl.conf

sysctl.conf 是 Linux 系统中用于配置内核运行时参数的配置文件,它位于 /etc/sysctl.conf

sysctl.conf 参数
(图片来源网络,侵删)

这些参数在系统启动时由 sysctl 服务读取并应用到内核中,从而在不重启系统的情况下动态地调整内核的行为。


如何修改和使用 sysctl.conf

修改配置文件

你需要使用文本编辑器(如 vi, nano, vim)来编辑 /etc/sysctl.conf 文件。

sudo vi /etc/sysctl.conf

在文件中,你可以添加或修改内核参数,格式为 参数 = 值

示例:

sysctl.conf 参数
(图片来源网络,侵删)
# 禁用 IPv6
net.ipv6.conf.all.disable_ipv6 = 1
# 增加文件描述符的最大数量
fs.file-max = 1000000
# 调整 TCP/IP 协议栈参数
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_syncookies = 1

应用配置

修改完配置文件后,你需要让系统重新加载这些配置,有两种方式:

仅加载修改过的参数(推荐)

sudo sysctl -p
# 或者指定配置文件
sudo sysctl -p /etc/sysctl.conf

这个命令会读取 sysctl.conf 文件并应用其中的所有参数,如果某个参数应用失败,它会打印出错误信息。

重新启动 sysctl 服务

sysctl.conf 参数
(图片来源网络,侵删)
sudo systemctl restart systemd-sysctl

在某些现代 Linux 发行版(如使用 systemd 的系统)中,sysctl 服务负责加载配置,重启这个服务可以达到同样的效果。


常用的 sysctl.conf 参数

以下是一些在生产环境中非常常用的内核参数优化,涵盖了网络、文件系统、内存和安全等方面。

网络相关优化

这些参数通常用于提高服务器在高并发、高负载下的网络性能。

参数 默认值 推荐值 说明
net.core.somaxconn 128 65535 监听队列的最大长度,对于高并发服务器(如 Nginx, Apache),调大此值可以防止连接被拒绝。
net.ipv4.tcp_max_syn_backlog 128/512 65535 TCP 半连接队列的最大长度,在 SYN Flood 攻击下,这个队列会迅速填满,调大它有助于抵御小规模攻击并提高正常连接处理能力。
net.ipv4.tcp_syncookies 0 1 启用 TCP SYN Cookies,当 tcp_max_syn_backlog 队列溢出时,启用此功能可以防止 SYN Flood 攻击,是一种有效的缓解措施。
net.core.netdev_max_backlog 1000 10000 当网络接收数据包的速度快于内核处理速度时,数据包会被放入队列,调大此值可以应对突发流量。
net.ipv4.tcp_tw_reuse 0 1 启用 TIME-WAIT 状态的 sockets 的快速回收,在高并发短连接场景下(如 HTTP 短连接),可以减少 TIME-WAIT 状态的 sockets 数量,提高端口复用率。
net.ipv4.tcp_fin_timeout 60 10-30 FIN-WAIT-2 状态的连接超时时间,调小此值可以更快地释放连接资源,但过小可能导致数据包丢失。
net.ipv4.ip_local_port_range 32768 60999 1024 65535 本套接字可用的端口范围,调大范围(特别是起始值)可以为需要大量端口的程序(如 Nginx upstream)提供更多可用端口。
net.core.rmem_max / net.core.wmem_max 212992 / 212992 134217728 / 134217728 套接字接收/发送缓冲区的最大大小,对于大文件传输或高延迟网络,增大缓冲区可以提高吞吐量。
net.ipv4.tcp_rmem / net.ipv4.tcp_wmem 4096 4096 4096 / 4096 4096 4096 4096 87380 134217728 / 4096 65536 134217728 TCP 套接字的接收/发送缓冲区大小,包含三个值:最小、默认、最大,根据网络状况优化。

文件系统相关优化

参数 默认值 推荐值 说明
fs.file-max 9223372036854775807 (系统限制) 1000000 系统中所有进程能够打开的文件描述符的最大数量,对于需要大量打开文件的服务(如数据库、Web 服务器)非常重要。
fs.inotify.max_user_watches 8192 524288 每个用户可以监视的 inotify 实例数量,对于使用 inotifywait 等工具的开发者,或者像 Nginx 这样的服务(用于监视文件变化)可能需要调大此值。

内存管理优化

参数 默认值 推荐值 说明
vm.swappiness 60 10 控制内核使用交换空间的倾向,值越高,越倾向于使用交换空间,对于有足够物理内存的服务器,调低此值(如 10)可以减少磁盘 I/O,提高性能,设置为 0 意味着内核仅在内存耗尽时才使用交换。
vm.vfs_cache_pressure 100 50 控制内核回收 VFS 缓存(dentry 和 inode)的倾向,值越高,回收越积极,对于频繁访问文件系统的服务器,调低此值(如 50)可以保留更多的缓存,提高文件访问速度。

安全相关优化

参数 默认值 推荐值 说明
net.ipv4.conf.all.send_redirects 1 0 禁止所有接口发送 ICMP 重定向消息,防止恶意利用重定向消息进行中间人攻击。
net.ipv4.conf.default.send_redirects 1 0 禁止默认接口发送 ICMP 重定向消息。
net.ipv4.icmp_echo_ignore_all 0 1 忽略所有 ICMP ping 请求,可以防止简单的网络探测,但也会影响使用 ping 命令诊断网络。
net.ipv4.conf.all.accept_source_route 0 0 禁止接受源路由包,这是一种安全措施,防止恶意用户通过源路由绕过安全策略。

注意事项

  1. 不要盲目优化:不是所有参数都需要修改,很多默认值已经为通用场景做了优化,修改前请务必理解每个参数的作用。
  2. 理解业务场景:优化参数需要根据你的具体业务场景(如 Web 服务器、数据库、高并发计算等)进行调整,没有“放之四海而皆准”的万能配置。
  3. 性能测试:修改参数后,必须进行充分的压力测试和性能监控,以确保优化确实有效且没有带来负面影响。
  4. 保持备份:修改 /etc/sysctl.conf 之前,最好备份一份原始文件。
  5. 内核版本差异:某些参数在不同版本的 Linux 内核中可能不存在或默认值不同,可以通过 sysctl -a 命令查看当前系统支持的所有参数及其当前值。

sysctl.conf 是 Linux 系统管理员进行内核调优的强大工具,通过合理地配置这些参数,可以显著提升系统在网络、内存、文件系统等方面的性能和稳定性,但请务必谨慎行事,深入理解每个参数的含义后再进行修改。

-- 展开阅读全文 --
头像
moto g turbo参数值不值得买?
« 上一篇 今天
ThinkPad E420拆机步骤是怎样的?
下一篇 » 53分钟前

相关文章

取消
微信二维码
支付宝二维码

最近发表

标签列表

目录[+]