Linux操作系统提供了大量的命令行参数,用于调整系统行为、性能优化、故障排查等。以下是一些常用的Linux命令行参数及其用途:
1. vm.swappiness
- 作用:控制内核使用交换空间的倾向。
- 默认值:通常为30。
- 调整范围:0到100。
- 应用场景:在高内存压力下,降低此值可以减少交换,提高性能。
2. fs.file-max
- 作用:设置系统允许的最大文件句柄数。
- 应用场景:在高并发环境下,增加此值可以避免文件句柄耗尽。
3. net.ipv4.tcp_syncookies
- 作用:启用SYN Cookies以防止SYN Flood攻击。
- 默认值:0(禁用),1(启用)。
- 应用场景:在网络攻击或高并发连接请求时启用。
4. net.core.somaxconn
- 作用:设置系统中每一个端口最大的监听队列长度。
- 默认值:通常为128。
- 应用场景:在高并发服务器上增加此值可以减少连接拒绝。
5. net.ipv4.ip_local_port_range
- 作用:设置本地端口范围。
- 默认值:通常是32768到61000。
- 应用场景:在大量短连接服务中,调整此范围可以避免端口耗尽。
6. vm.dirty_ratio
和 vm.dirty_background_ratio
- 作用:控制脏页(未写入磁盘的缓存页面)的比例。
- 默认值:
vm.dirty_ratio
通常为20,vm.dirty_background_ratio
通常为10。 - 应用场景:在I/O密集型应用中,调整这些值可以优化磁盘写入性能。
7. fs.inotify.max_user_watches
- 作用:设置每个用户可以监视的文件数量。
- 应用场景:在使用inotify进行文件系统监控时,增加此值可以避免监控失败。
8. net.ipv4.tcp_fin_timeout
- 作用:设置TCP连接在FIN-WAIT-2状态下的超时时间。
- 默认值:通常为60秒。
- 应用场景:在网络延迟较高或连接频繁断开的情况下,减少此值可以更快释放资源。
9. kernel.pid_max
- 作用:设置系统允许的最大进程ID。
- 默认值:通常为32768。
- 应用场景:在进程密集型系统中,增加此值可以避免PID耗尽。
10. net.ipv4.icmp_echo_ignore_all
- 作用:控制是否忽略所有ICMP Echo请求(如ping)。
- 默认值:0(不忽略),1(忽略)。
- 应用场景:在安全性要求较高的环境中,启用此选项可以防止ping攻击。
调整参数的方法
通常,这些参数可以通过编辑/etc/sysctl.conf
文件来永久调整,然后使用sysctl -p
命令使更改生效。例如:
# 编辑sysctl.conf文件
sudo nano /etc/sysctl.conf
# 添加或修改参数
vm.swappiness=10
net.ipv4.tcp_syncookies=1
# 使更改生效
sudo sysctl -p
注意事项
- 调整内核参数可能会影响系统稳定性和性能,建议在测试环境中进行调整并观察效果后再应用到生产环境。
- 某些参数可能需要重启系统才能生效。
通过合理调整这些参数,可以优化Linux系统的性能、稳定性和安全性,以适应不同的应用场景和需求。