當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
工具模擬并發請求),避免直接應用于生產環境;