CentOS LAMP服務器性能調優指南
LAMP(Linux、Apache、MySQL、PHP)是經典的開源Web架構,針對CentOS系統的調優需從硬件基礎、系統內核、服務配置、緩存策略、數據庫優化、監控維護六大維度系統推進,以下是具體方案:
硬件是性能的底層支撐,需優先滿足核心資源需求:
通過調整內核參數提升系統資源利用率:
/etc/sysctl.conf
文件,添加/修改以下關鍵參數:
net.ipv4.tcp_tw_reuse = 1
:復用TIME_WAIT狀態的TCP連接,減少連接建立開銷;net.ipv4.tcp_max_orphans = 32768
:限制孤兒連接數量,避免內存耗盡;vm.swappiness = 10
:降低系統使用交換分區(Swap)的傾向(值越小越優先用物理內存);vm.dirty_background_ratio = 5
、vm.dirty_ratio = 10
:控制臟頁(未寫入磁盤的緩存數據)的刷新閾值,平衡內存與磁盤I/O。sudo sysctl -p
命令。sudo yum update -y
,確保內核、Apache、MySQL、PHP等組件為最新穩定版(修復安全漏洞并提升性能)。systemctl stop firewalld && systemctl disable firewalld
關閉默認防火墻(若用iptables或第三方防火墻),停止無用的服務(如Postfix、Avahi-daemon),減少系統資源占用。-T largefile
選項優化大文件處理;定期用fsck
檢查并修復文件系統錯誤。Apache是LAMP的核心Web組件,需調整工作模式與參數:
/etc/httpd/conf/httpd.conf
,修改ServerLimit
(最大進程數,如200)、MaxRequestWorkers
(并發處理數,如150)、KeepAliveTimeout
(保持連接超時時間,如5秒)、MaxKeepAliveRequests
(單連接最大請求數,如100)等參數,平衡并發性能與內存消耗。mod_cache
緩存靜態內容(如圖片、CSS、JS),減少重復請求對后端的壓力;配置mod_deflate
壓縮響應內容(如gzip),降低傳輸體積(建議壓縮級別設為6,兼顧速度與壓縮比)。數據庫是性能瓶頸的常見來源,需從配置、索引、查詢三方面優化:
/etc/my.cnf
(或/etc/mysql/mysql.conf.d/mysqld.cnf
),重點設置:
innodb_buffer_pool_size
:InnoDB緩沖池大?。ńㄗh設為物理內存的50%-70%,如8GB內存設為4GB-6GB),用于緩存表數據和索引,減少磁盤I/O;query_cache_size
:查詢緩存大?。ㄈ?4MB-128MB,適用于讀多寫少的場景,但高并發寫場景建議關閉);max_connections
:最大連接數(如100-200,避免過多連接導致內存耗盡),配合thread_cache_size
(線程緩存數,如16)減少線程創建開銷。WHERE
、JOIN
、ORDER BY
字段創建索引(如ALTER TABLE users ADD INDEX idx_username (username)
);用EXPLAIN
分析慢查詢(如EXPLAIN SELECT * FROM orders WHERE user_id = 1
),優化SQL語句(避免SELECT *
、減少子查詢、用JOIN
代替子查詢);定期執行OPTIMIZE TABLE
(如OPTIMIZE TABLE orders
)整理表碎片,提升查詢速度。PHP是動態內容的處理核心,需通過緩存與模塊優化提升執行效率:
OPcache
(PHP內置擴展),編輯php.ini
(如/etc/php.ini
),添加opcache.enable=1
、opcache.memory_consumption=128
(緩存內存大小,如128MB)、opcache.max_accelerated_files=10000
(緩存的腳本文件數)等參數,避免重復編譯PHP腳本(可提升20%-30%的執行速度)。php.ini
,注釋掉未使用的模塊(如extension=ldap.so
、extension=imap.so
),減少內存占用。str_replace
代替preg_replace
,除非需要正則表達式)。緩存是提升響應速度的關鍵手段,需結合應用層緩存與頁面緩存:
Memcached
(內存鍵值存儲)或Redis
(支持數據結構更豐富),配置PHP應用(如WordPress、Drupal)連接緩存服務器,緩存數據庫查詢結果(如商品分類、用戶信息),減少數據庫負載;例如,用memcached
擴展連接Redis:$memcached = new Memcached(); $memcached->addServer('127.0.0.1', 11211);
。Varnish
(HTTP加速器)緩存動態頁面(如首頁、文章頁),將動態內容轉換為靜態內容輸出(緩存命中率可達90%以上);配置Varnish監聽80端口,將請求轉發給Apache(監聽8080端口),提升頁面加載速度。性能調優是持續過程,需通過監控工具及時發現問題:
top
(查看CPU、內存使用率)、vmstat
(查看系統整體性能,如進程、內存、I/O)、iostat
(查看磁盤I/O情況,如讀寫速率、等待時間)、netstat
(查看網絡連接狀態,如TCP連接數)定期檢查系統狀態。Zabbix
(企業級監控平臺)、Prometheus+Grafana
(可視化監控),監控服務器的各項指標(如CPU利用率、內存使用率、MySQL查詢響應時間、Apache并發數),設置告警閾值(如CPU利用率超過80%時發送郵件告警),及時處理性能瓶頸。mysqldump -u root -p dbname > backup.sql
,配置文件備份用cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
);innodb_buffer_pool_size
的值)。