1. RHEL9.7生产环境部署前的系统评估
在开始优化前,我们需要对基础系统状态进行全面评估。不同于桌面版或测试环境,生产环境的优化必须建立在准确的状态认知基础上。我通常会执行以下检查流程:
首先通过subscription-manager status验证订阅状态,确保系统能够获取官方更新。曾经遇到过客户因订阅过期导致安全补丁无法安装的案例,这点在金融行业尤其敏感。接着用dnf repolist检查已启用的仓库,生产环境建议仅保留baseos、appstream和补充仓库(如EPEL需谨慎评估)。
内存和CPU配置需要特别关注,执行free -h和lscpu记录初始值。去年在某电商平台部署时,发现默认安装未启用NUMA平衡,导致跨节点内存访问延迟增加15%。存储方面,lsblk -f和df -Th的输出要存档,特别是XFS文件系统的mkfs参数(如sunit/swidth)对数据库性能影响极大。
网络配置检查包括:
bash复制# 查看中断平衡状态
cat /proc/interrupts | grep eth0
# 检查队列长度
ethtool -l eth0
# 确认TSO/GRO状态
ethtool -k eth0 | grep -E 'tcp-segmentation-offload|generic-receive-offload'
关键提示:生产环境务必禁用IPv6!许多中间件在双栈环境下会出现不可预知的连接问题,通过
sysctl -w net.ipv6.conf.all.disable_ipv6=1永久关闭。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 内核参数与系统服务的深度调优
2.1 内核参数精细化配置
/etc/sysctl.conf的修改需要结合业务负载特征。对于Web服务器,建议配置:
conf复制# 避免TIME_WAIT堆积
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1 # RHEL9已移除该参数
# 增大连接跟踪表
net.netfilter.nf_conntrack_max = 655360
# 内存分配策略
vm.swappiness = 10
vm.dirty_ratio = 20
vm.dirty_background_ratio = 5
数据库服务器则需要侧重内存和IO优化:
conf复制# 大页内存配置
vm.nr_hugepages = 1024
vm.hugetlb_shm_group = 54321 # 对齐postgres或其他服务组ID
# 块设备调度
vm.dirty_expire_centisecs = 6000
vm.dirty_writeback_centisecs = 200
2.2 系统服务精简策略
通过systemctl list-unit-files --type=service列出所有服务,生产环境必须关闭的包括:
- abrtd(崩溃报告)
- cups(打印服务)
- bluetooth(蓝牙)
- packagekit(自动更新)
使用以下命令创建禁用列表:
bash复制DISABLED_SERVICES=(abrtd cups bluetooth packagekit)
for svc in "${DISABLED_SERVICES[@]}"; do
systemctl disable --now $svc
done
避坑经验:不要盲目禁用所有"看似无用"的服务!曾经有团队禁用irqbalance导致网络性能下降40%,务必先通过
perf stat -a sleep 10基准测试验证。
3. 存储子系统的性能优化实战
3.1 文件系统选型与挂载优化
对于RHEL9.7,XFS仍是首选文件系统。创建时的关键参数示例:
bash复制mkfs.xfs -f -i size=2048 -d su=64k,sw=4 /dev/sdb1
挂载选项推荐:
conf复制/dev/sdb1 /data xfs defaults,noatime,nodiratime,logbufs=8,logbsize=256k 0 0
如果是高并发小文件场景(如日志存储),需要额外调整:
bash复制# 调整inode缓存
sysctl -w fs.inotify.max_user_watches=1048576
sysctl -w fs.inotify.max_user_instances=1024
3.2 LVM与多路径配置进阶
生产存储必须配置多路径(multipath),示例配置/etc/multipath.conf:
conf复制devices {
device {
vendor "NETAPP"
product "LUN"
path_grouping_policy group_by_prio
features "1 queue_if_no_path"
prio "alua"
path_checker tur
failback immediate
}
}
LVM层面建议:
bash复制# 修改扫描配置避免扫描非业务磁盘
echo 'filter = [ "a|^/dev/mapper/mpath.*|", "r/.*/" ]' > /etc/lvm/lvm.conf
# 调整缓存参数
lvchange --cachemode writeback vg00/lvdata
lvchange --cachemetadata 1 vg00/lvdata
4. 安全加固与合规性设置
4.1 SELinux策略定制
生产环境必须开启SELinux!常见误区是直接禁用,正确做法是针对性调整:
bash复制# 查看拒绝日志
ausearch -m avc -ts recent
# 生成自定义模块
audit2allow -a -M mypolicy
semodule -i mypolicy.pp
关键布尔值设置:
bash复制setsebool -P httpd_can_network_connect_db 1
setsebool -P mysql_connect_any 0
4.2 审计与合规检查
安装scap-security-guide并执行基线检查:
bash复制dnf install scap-security-guide
oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_stig \
--results scan-results.xml \
/usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml
重点加固项包括:
- 配置密码复杂度策略:/etc/security/pwquality.conf
- 限制su命令:/etc/pam.d/su
- 设置会话超时:/etc/profile.d/timeout.sh
bash复制echo 'TMOUT=300' > /etc/profile.d/timeout.sh
5. 性能监控与持续优化
5.1 指标采集系统部署
推荐使用以下工具组合:
- node_exporter + Prometheus + Grafana 基础监控
- eBPF工具链(bcc/BPFTrace)深度分析
- Performance Co-Pilot(PCP)企业级监控
关键指标采集示例:
bash复制# 安装bcc-tools
dnf install bcc-tools
# 跟踪块设备延迟
/usr/share/bcc/tools/biolatency -m 10
5.2 自动化调优工具
tuned服务配置生产环境profile:
bash复制tuned-adm profile throughput-performance
cat /etc/tuned/throughput-performance/tuned.conf
[main]
include=latency-performance
[sysctl]
vm.dirty_ratio = 20
vm.dirty_background_ratio = 10
对于Java应用,需额外配置:
bash复制echo 'JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=200"' > /etc/conf.d/tomcat
6. 关键服务的专项优化
6.1 PostgreSQL数据库优化
在/var/lib/pgsql/15/data/postgresql.conf中关键参数:
conf复制shared_buffers = 8GB # 25% of total RAM
effective_cache_size = 24GB # 75% of total RAM
maintenance_work_mem = 2GB
random_page_cost = 1.1 # SSD环境
max_worker_processes = 8
wal_buffers = 16MB
6.2 Nginx Web服务器调优
/etc/nginx/nginx.conf优化片段:
conf复制worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 4096;
use epoll;
multi_accept on;
}
http {
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
aio threads;
sendfile on;
tcp_nopush on;
}
最后提醒:所有优化必须通过A/B测试验证效果。我在金融系统迁移时曾遇到一个案例,盲目启用transparent_hugepage反而导致Oracle性能下降30%。建议使用如下测试流程:
bash复制# 基准测试前
perf stat -e task-clock,cycles,instructions,cache-references,cache-misses -a sleep 60
# 实施变更
echo never > /sys/kernel/mm/transparent_hugepage/enabled
# 变更后测试
perf stat -e task-clock,cycles,instructions,cache-references,cache-misses -a sleep 60
