1. 优化内核参数,提升系统级稳定性
调整内核参数可增强系统对高并发的处理能力,减少资源耗尽风险。需修改以下关键参数:
/etc/security/limits.conf,添加* soft nofile 65535和* hard nofile 65535,提升单个进程可打开的最大文件数(默认值过低易导致“Too many open files”错误);/etc/sysctl.conf,设置net.core.somaxconn = 65535(监听队列最大长度,避免连接被拒绝)、net.ipv4.tcp_max_syn_backlog = 65535(SYN队列大小,应对高并发连接请求)、net.ipv4.tcp_tw_reuse = 1(复用TIME_WAIT状态的连接,减少资源占用)、net.ipv4.tcp_fin_timeout = 30(缩短TIME_WAIT状态的超时时间,默认60秒);/etc/sysctl.conf中添加net.ipv4.tcp_max_tw_buckets = 5000(限制TIME_WAIT连接的最大数量),防止大量僵尸连接占用系统资源。修改后执行sysctl -p使配置生效。2. 调整MPM(多处理模块)设置,匹配服务器资源
MPM是Apache处理并发的核心组件,需根据服务器硬件配置(CPU核心数、内存大小)选择合适的模块并调整参数:
prefork(多进程模型,适合兼容性场景),但event(事件驱动模型,高并发性能更优)更适合现代Web应用。禁用prefork,启用event:# 禁用prefork,启用event
sed -i 's/LoadModule mpm_prefork_module/#LoadModule mpm_prefork_module/' /etc/httpd/conf.modules.d/00-mpm.conf
sed -i 's/#LoadModule mpm_event_module/LoadModule mpm_event_module/' /etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-mpm.conf(event模块),设置:<IfModule mpm_event_module>
StartServers 2 # 启动时的进程数(根据CPU核心数调整,如4核可设为4)
MinSpareThreads 25 # 最小空闲线程数(默认25,适合高并发)
MaxSpareThreads 75 # 最大空闲线程数(避免过多空闲进程占用内存)
ThreadLimit 64 # 单个进程的最大线程数(默认64,无需修改)
ThreadsPerChild 25 # 每个子进程创建的线程数(如4核×25=100,并发能力)
MaxRequestWorkers 150 # 最大并发请求数(根据内存计算:每进程约占用10-20MB,1GB内存可设为500)
MaxConnectionsPerChild 1000 # 每个子进程处理的请求数(避免内存泄漏,设为0表示不限制)
</IfModule>
注:MaxRequestWorkers需根据服务器内存调整(公式:可用内存(MB)/每个Apache进程占用内存(MB),如1GB内存、每个进程15MB,则设为60-80)。3. 启用缓存与压缩,降低服务器负载
mod_expires模块缓存静态资源(CSS、JS、图片),减少重复请求对服务器的压力。编辑Apache配置文件(/etc/httpd/conf/httpd.conf),添加:<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "access plus 30 days"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType application/javascript "access plus 30 days"
</IfModule>
mod_deflate模块压缩文本类数据(HTML、CSS、JS),减小传输体积(通常可减少50%-70%的传输量)。编辑配置文件,添加:<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
</IfModule>
注:启用压缩会增加少量CPU开销,但对带宽有限或移动端用户来说,收益远大于成本。4. 精简模块与服务,减少攻击面
autoindex、cgi),禁用未使用的模块可降低资源消耗和安全风险。执行以下命令查看已启用模块:httpd -M
禁用模块(如autoindex):sed -i 's/LoadModule autoindex_module/#LoadModule autoindex_module/' /etc/httpd/conf.modules.d/00-base.conf
重启Apache使更改生效:systemctl restart httpd。firewalld或iptables)仅开放必要的端口(HTTP 80、HTTPS 443),阻止非法访问:firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
5. 隐藏敏感信息,降低被攻击风险
/etc/httpd/conf/httpd.conf),设置:ServerTokens Prod # 不显示服务器版本和操作系统信息
ServerSignature Off # 不在错误页面显示服务器信息
这样,当发生404或500错误时,错误页面不会暴露Apache的版本号,减少黑客针对性攻击的机会。6. 强化日志管理,快速定位问题
warn(默认为info),减少不必要的日志记录(如常规访问日志),降低磁盘I/O压力。编辑配置文件,添加:LogLevel warn
access_log)和错误日志(error_log)分开存储,便于后续分析。编辑虚拟主机配置(/etc/httpd/conf.d/*.conf),添加:CustomLog /var/log/httpd/access_log combined
ErrorLog /var/log/httpd/error_log
logrotate工具定期压缩和删除旧日志(如保留30天),避免日志文件过大占用磁盘空间。编辑/etc/logrotate.d/httpd,添加:/var/log/httpd/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 640 root root
sharedscripts
postrotate
systemctl reload httpd > /dev/null 2>&1 || true
endscript
}
这样,日志文件会每天压缩并保留30天,超过30天的日志会被自动删除。7. 定期更新与监控,预防潜在问题
yum更新Apache及其依赖组件(如httpd、mod_ssl),修复已知的安全漏洞:yum update httpd -y
top(查看CPU、内存使用率)、iotop(查看磁盘I/O)、netstat(查看网络连接)等工具实时监控服务器状态;安装sysstat工具(yum install sysstat -y),记录历史性能数据(如CPU利用率、内存占用),便于后续分析瓶颈:systemctl enable sysstat
systemctl start sysstat
通过分析/var/log/sa/saXX文件(XX为日期),可了解服务器的性能趋势,提前预警资源不足的问题。