当CentOS LAMP(Linux+Apache+MySQL+PHP)环境出现资源占用过高时,需从硬件、系统配置、服务参数、缓存机制、监控与代码等多维度逐步排查优化,以下是具体措施:
1. 增加硬件资源:若服务器CPU、内存或存储(如机械硬盘)成为瓶颈,优先升级硬件(如增加内存容量、更换固态硬盘SSD、升级CPU核心数),这是最直接的解决方式。
2. 选择高性能硬件:使用千兆及以上网卡、企业级SSD(如NVMe SSD),提升网络传输和磁盘I/O性能。
1. 调整内核参数:通过修改/etc/sysctl.conf文件优化系统内核设置,例如:
vm.swappiness=10(降低交换分区使用频率,减少磁盘I/O);vm.dirty_background_ratio=5、vm.dirty_ratio=10(优化脏页写入策略,提升磁盘写入效率)。sysctl -p使配置生效。systemctl disable firewalld(若无需防火墙)、systemctl stop postfix(若无需邮件服务)等命令关闭无用服务,减少系统资源消耗。ext4或XFS高性能文件系统,挂载时添加noatime选项(避免记录文件访问时间,减少磁盘I/O);定期执行fsck检查并修复文件系统错误。1. Apache优化:
MaxClients(或MaxRequestWorkers):根据服务器内存计算(如2GB内存可设置为600),避免过多并发进程占用内存;KeepAlive:在内存紧张时,设置KeepAlive Off,减少持久连接带来的进程占用;MaxKeepAliveRequests(如设为100)和KeepAliveTimeout(如设为5秒),控制空闲连接时长。innodb_buffer_pool_size:设置为物理内存的50%-70%(如4GB内存设为2GB~3GB),提升InnoDB表缓存效率;query_cache_type=1、query_cache_size=64M,缓存常用查询结果;EXPLAIN分析慢查询,添加索引避免全表扫描。php.ini注释未使用的模块(如xdebug),减少内存占用;OPcache扩展(extension=opcache.so),缓存编译后的PHP脚本,提升执行速度;1. 应用层缓存:使用Memcached或Redis作为缓存服务器,缓存数据库查询结果、会话数据等,减少数据库负载。
2. HTTP缓存:部署Varnish作为反向代理缓存,缓存静态页面(如HTML、CSS、JS),降低Apache处理请求的压力。
1. 实时监控工具:使用top(查看进程CPU/内存占用)、htop(可视化监控)、vmstat(查看系统整体资源使用)、iostat(查看磁盘I/O)等命令,定期检查资源瓶颈。
2. 报警设置:通过Zabbix、Prometheus等监控工具,设置内存使用率(如超过80%)、CPU负载(如超过4核)的报警阈值,及时通知管理员。
1. 优化应用程序代码:修复内存泄漏问题(如未关闭数据库连接、文件句柄),减少不必要的循环和递归调用。
2. 负载均衡:若单台服务器无法承载流量,使用Nginx作为前端负载均衡器,将请求分发到多台Apache服务器,提升整体处理能力。
1. 使用轻量级组件:若Apache性能瓶颈明显,可替换为Nginx(事件驱动架构,更擅长高并发);或使用MariaDB替代MySQL(兼容且性能更优)。
2. 关闭SELinux:若不需要SELinux的安全策略,可通过setenforce 0临时关闭,sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config永久关闭,减少系统资源消耗。
注意事项:
ab工具模拟并发请求),避免直接应用于生产环境;