一、sysctl w
使用sysctl可以查询和修改Linux内核的运行参数。sysctl w 是指强制系统立刻写入内核变量的值,而不是等待系统重启后再生效。在需要立即更新内核参数的场合,可以使用sysctl w命令。
# 修改内核参数
$ sudo sysctl -w net.ipv4.tcp_max_syn_backlog=4096
# 立即生效
$ sudo sysctl -p
以上示例中,我们通过sysctl命令修改了TCP的最大Syn Backlog队列长度,然后立即生效。
二、sysctl p
有时我们需要查询并修改和某个目录相关的内核参数,这时可以使用sysctl p命令。必须指定要查询或修改的目录路径。
# 查看与网络相关的所有内核参数
$ sudo sysctl -p /proc/sys/net
以上示例中,我们指定了要查询的目录为/proc/sys/net,命令会返回所有跟网络相关的内核参数。
三、sysctl.conf
sysctl.conf文件是Linux内核参数配置文件,位于 /etc/sysctl.conf。在这个文件中,可以将需要配置的内核参数添加进去,系统启动时会根据此文件中的参数进行设置。我们可以根据需要修改sysctl.conf文件,改变内核的默认设置。
# 打开sysctl.conf文件
$ sudo nano /etc/sysctl.conf
# 修改参数
net.ipv4.tcp_max_syn_backlog=4096
# 保存退出
# 立即生效
$ sudo sysctl -p
以上示例中,我们打开了sysctl.conf文件,并修改了TCP的最大Syn Backlog队列长度为4096,并保存退出。然后使用sysctl -p命令让修改立即生效。
四、TCP参数
除了示例中提到的TCP的最大Syn Backlog队列长度通过sysctl修改以外,还有很多TCP相关的内核参数可以通过sysctl进行配置。下面列出几个常用的TCP参数:
# SYN队列的长度
net.ipv4.tcp_max_syn_backlog=1024
# IP数据包转发功能
net.ipv4.ip_forward=1
# TCP SYN cookie保护
net.ipv4.tcp_syncookies=1
# 避免TIME_WAIT的数量过大,使用TIME-WAIT连接重用
net.ipv4.tcp_tw_reuse=1
# 单个TCP连接的最大数据包数量
net.ipv4.tcp_max_orphans=262144
五、内存管理相关的参数
内存管理是Linux系统中非常重要的部分,也有很多内核参数可以通过sysctl进行调整。下面列出几个常用的内存管理相关的参数:
# 虚拟内存最大占用量限制,单位为bytes
vm.overcommit_memory=2
# 系统内存释放行为
vm.drop_caches=3
# 共享内存最大值,单位为bytes
kernel.shmmax=33554432
# 共享内存最大段数
kernel.shmall=2097152
六、网络性能相关的参数
网络性能是使用Linux系统的重要领域之一。下面列举了几个常用的网络性能相关的内核参数:
# 启动SYN Cookie保护,可防止网络攻击中的SYN泛洪攻击
net.ipv4.tcp_syncookies=1
# 允许TCP和UDP端口复用
net.ipv4.ip_local_port_range = 1024 65000
# TCP keepalive时间间隔, 单位为秒
net.ipv4.tcp_keepalive_time=120
# 连接超时时间,单位为秒
net.ipv4.tcp_fin_timeout=30
# 接受空闲连接的重试间隔,单位为秒
net.ipv4.tcp_keepalive_intvl=15
七、系统调用相关的参数
下面列举了几个常用的系统调用相关的内核参数:
# 提高系统的内存回收速度
vm.swappiness=0
# 打开Orphan端口reuse功能
net.ipv4.tcp_orphan_retries=3
# 提高进程可打开文件的最大数目
fs.file-max=65535
# 允许进程使用更多的内存,单位为bytes
kernel.pid_max = 4194303
八、总结
本文通过几个方面详细地阐述了sysctl的使用方法,并给出了一些常见的内核参数的配置示例。sysctl可以有效地提高Linux系统的稳定性和性能。