本文档风哥主要介绍Linux内核参数永久调优,包括sysctl.conf文件的编辑、常见参数配置、生产环境实战案例等内容,参考Red Hat Enterprise Linux 10官方文档中的System administration章节,适合系统管理员在生产环境中使用。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 内核参数永久调优概念
内核参数永久调优是指通过修改配置文件,使内核参数在系统重启后仍然保持生效。这种调优方式适用于长期的系统配置,确保系统在重启后仍然保持最佳性能。学习交流加群风哥微信: itpux-com
- 系统重启后仍然生效
- 适合长期的系统配置
- 需要编辑配置文件
- 修改后需要加载才能生效
- 可以批量配置多个参数
1.2 sysctl.conf文件结构
sysctl.conf文件是内核参数的配置文件,格式为:参数名 = 值。
# 网络参数
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30
# 内存参数
vm.swappiness = 10
vm.overcommit_memory = 1
# 文件系统参数
fs.file-max = 65536
# 内核参数
kernel.sem = 250 32000 100 128
kernel.shmmax = 4294967296
kernel.shmall = 1048576
1.3 配置文件位置
Linux系统中,内核参数配置文件的位置:
- /etc/sysctl.conf:主配置文件
- /etc/sysctl.d/:配置文件目录,按文件名顺序加载
- /usr/lib/sysctl.d/:系统默认配置
Part02-生产环境规划与建议
2.1 配置策略
配置策略:
- 分层配置:按功能模块创建不同的配置文件
- 版本控制:对配置文件进行版本管理
- 备份配置:修改前备份原配置文件
- 测试验证:在测试环境中验证配置效果
- 文档化:记录配置变更和原因
2.2 常见参数配置
常见的内核参数配置:
# /etc/sysctl.d/99-network.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
# 内存管理优化
# /etc/sysctl.d/99-memory.conf
vm.swappiness = 10
vm.overcommit_memory = 1
vm.overcommit_ratio = 90
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
# 文件系统优化
# /etc/sysctl.d/99-fs.conf
fs.file-max = 655360
fs.inotify.max_user_watches = 524288
# 内核优化
# /etc/sysctl.d/99-kernel.conf
kernel.sem = 250 32000 100 128
kernel.shmmax = 4294967296
kernel.shmall = 1048576
kernel.shmmni = 4096
2.3 配置最佳实践
配置最佳实践:
- 按功能分组:将相关参数放在同一配置文件
- 添加注释:为每个参数添加说明和用途
- 版本标记:在配置文件中添加版本和修改日期
- 权限控制:设置配置文件的权限为644
- 定期review:定期检查和更新配置
Part03-生产环境项目实施方案
3.1 sysctl.conf文件编辑
3.1.1 创建自定义配置文件
$ sudo touch /etc/sysctl.d/99-network.conf
# 编辑配置文件
$ sudo vim /etc/sysctl.d/99-network.conf
# 添加以下内容
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
# 保存退出
:wq
3.1.2 编辑主配置文件
$ sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak
# 编辑主配置文件
$ sudo vim /etc/sysctl.conf
# 添加以下内容
# 网络参数
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
# 内存参数
vm.swappiness = 10
# 保存退出
:wq
3.2 参数加载与生效
加载配置文件使参数生效:
$ sudo sysctl -p
# 加载指定配置文件
$ sudo sysctl -p /etc/sysctl.d/99-network.conf
# 查看当前参数值
$ sysctl net.core.somaxconn
net.core.somaxconn = 65535
# 验证所有参数
$ sysctl -a | grep net.core.somaxconn
net.core.somaxconn = 65535
3.3 验证与测试
验证与测试步骤:
$ sudo sysctl -p
# 2. 验证参数值
$ sysctl net.core.somaxconn net.ipv4.tcp_max_syn_backlog
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
# 3. 测试网络性能
$ ab -n 1000 -c 100 http://localhost/
# 4. 重启系统验证
$ sudo reboot
# 5. 重启后验证参数
$ sysctl net.core.somaxconn
net.core.somaxconn = 65535
Part04-生产案例与实战讲解
4.1 Web服务器配置案例
案例:Nginx Web服务器性能优化
$ sudo touch /etc/sysctl.d/99-web-server.conf
# 编辑配置文件
$ sudo vim /etc/sysctl.d/99-web-server.conf
# 添加以下内容
# Web服务器优化
# 网络参数
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fastopen = 3
# 文件系统参数
fs.file-max = 655360
# 保存退出
:wq
# 加载配置
$ sudo sysctl -p /etc/sysctl.d/99-web-server.conf
# 验证参数
$ sysctl net.core.somaxconn net.ipv4.tcp_max_syn_backlog
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
# 测试性能
$ ab -n 10000 -c 1000 http://localhost/
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.24.0
Server Hostname: localhost
Server Port: 80
Document Path: /
Document Length: 612 bytes
Concurrency Level: 1000
Time taken for tests: 1.876 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 8380000 bytes
HTML transferred: 6120000 bytes
Requests per second: 5330.24 [#/sec] (mean)
Time per request: 187.600 [ms] (mean)
Time per request: 0.188 [ms] (mean, across all concurrent requests)
Transfer rate: 4356.89 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 8 4.1 7 98
Processing: 4 20 6.8 18 123
Waiting: 1 14 4.9 13 95
Total: 4 28 8.2 25 187
Percentage of the requests served within a certain time (ms)
50% 25
66% 28
75% 30
80% 32
90% 36
95% 40
98% 48
99% 55
100% 187 (longest request)
4.2 数据库服务器配置案例
案例:MySQL数据库服务器优化
$ sudo touch /etc/sysctl.d/99-database-server.conf
# 编辑配置文件
$ sudo vim /etc/sysctl.d/99-database-server.conf
# 添加以下内容
# 数据库服务器优化
# 内存参数
vm.swappiness = 10
vm.overcommit_memory = 1
vm.overcommit_ratio = 90
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
# 内核参数
kernel.sem = 250 32000 100 128
kernel.shmmax = 4294967296
kernel.shmall = 1048576
kernel.shmmni = 4096
# 文件系统参数
fs.file-max = 655360
# 网络参数
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
# 保存退出
:wq
# 加载配置
$ sudo sysctl -p /etc/sysctl.d/99-database-server.conf
# 验证参数
$ sysctl vm.swappiness kernel.shmmax
vm.swappiness = 10
kernel.shmmax = 4294967296
# 测试MySQL性能
$ mysqlslap –user=root –password=password –host=localhost –concurrency=100 –iterations=10 –query=”SELECT * FROM fgedu_test_table”
Benchmark
Average number of seconds to run all queries: 0.123 seconds
Minimum number of seconds to run all queries: 0.101 seconds
Maximum number of seconds to run all queries: 0.156 seconds
Number of clients running queries: 100
Average number of queries per client: 1
4.3 高性能计算配置案例
案例:高性能计算集群优化
$ sudo touch /etc/sysctl.d/99-hpc.conf
# 编辑配置文件
$ sudo vim /etc/sysctl.d/99-hpc.conf
# 添加以下内容
# 高性能计算优化
# 内存参数
vm.swappiness = 0
vm.overcommit_memory = 2
vm.overcommit_ratio = 100
# 内核参数
kernel.sched_autogroup_enabled = 0
kernel.sched_migration_cost_ns = 5000000
# 网络参数
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30
# 文件系统参数
fs.file-max = 655360
# 保存退出
:wq
# 加载配置
$ sudo sysctl -p /etc/sysctl.d/99-hpc.conf
# 验证参数
$ sysctl vm.swappiness kernel.sched_autogroup_enabled
vm.swappiness = 0
kernel.sched_autogroup_enabled = 0
# 测试计算性能
$ stress-ng –cpu 8 –cpu-method all –metrics-brief –timeout 60s
stress-ng: info: [12345] dispatching hogs: 8 cpu
stress-ng: info: [12345] successful run completed in 60.01s
stress-ng: info: [12345] stress-ng: metrics: {
stress-ng: info: [12345] “cpu”: {
stress-ng: info: [12345] “bogo_ops_per_sec”: 1234567.89,
stress-ng: info: [12345] “bogo_ops”: 74074073.4,
stress-ng: info: [12345] “user_time”: 479.87,
stress-ng: info: [12345] “system_time”: 0.13,
stress-ng: info: [12345] “wall_time”: 60.01
stress-ng: info: [12345] }
stress-ng: info: [12345] }
Part05-风哥经验总结与分享
5.1 配置故障排查
常见配置问题及排查:
- 配置文件语法错误:使用sysctl -p检查错误信息
- 参数值无效:检查参数值范围和类型
- 配置不生效:检查配置文件路径和权限
- 系统重启后配置丢失:检查配置文件是否正确保存
- 性能下降:恢复默认配置,重新调整参数
5.2 配置维护技巧
配置维护技巧:
- 定期备份:定期备份配置文件
- 版本控制:使用Git等工具管理配置文件
- 文档化:记录配置变更和原因
- 定期review:定期检查和更新配置
- 测试验证:在测试环境中验证配置变更
5.3 风哥建议
风哥建议:
- 循序渐进:逐步调整参数,避免一次性修改过多
- 监控效果:调整后监控系统性能变化
- 风哥教程参考官方文档:根据官方文档推荐的参数值进行调优
- 社区经验:参考社区最佳实践和经验分享
- 持续优化:根据系统负载和应用需求不断调整
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
