確保CentOS系統及PHP相關軟件包為最新版本,以獲取性能改進和安全補丁。
sudo yum update -y
通過EPEL和Remi存儲庫安裝PHP(推薦7.4及以上穩定版本)及常用擴展(如MySQL、GD、MBString等),滿足應用需求。
sudo yum install epel-release -y
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum-config-manager --enable remi-php74 # 根據需求選擇PHP版本
sudo yum install php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-curl php-xml php-bcmath -y
PHP-FPM(FastCGI進程管理器)是提升PHP性能的關鍵,需調整以下核心參數(配置文件路徑:/etc/php-fpm.d/www.conf):
dynamic(動態調整進程數,適用于大多數場景)。pm.max_children:最大子進程數,建議為CPU核心數×4(如4核CPU設置為16),避免過多進程導致內存耗盡。pm.start_servers:啟動時的子進程數,建議為pm.max_children的1/4(如16核設置為4)。pm.min_spare_servers/pm.max_spare_servers:最小/最大空閑進程數,建議設置為pm.max_children的1/8~1/4(如16核設置為2~4),保持進程池活躍。request_terminate_timeout設置為30~60秒,防止長時間運行的腳本占用資源。sudo systemctl restart php-fpm
編輯/etc/php.ini(或PHP-FPM對應的php.ini),優化以下參數:
memory_limit設置為128~256M(根據應用需求調整,避免過高導致內存溢出)。max_execution_time設置為30~300秒(根據腳本復雜度調整,如上傳大文件時可適當延長)。upload_max_filesize/post_max_size設置為10~50M(根據上傳需求調整,如需上傳大文件可增大至100M以上)。[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128 # OPcache緩存內存大?。∕B)
opcache.interned_strings_buffer=8 # 內部字符串緩存大?。∕B)
opcache.max_accelerated_files=4000 # 緩存的最大文件數
opcache.revalidate_freq=60 # 腳本緩存驗證頻率(秒)
opcache.fast_shutdown=1 # 快速關閉功能
優化Linux內核參數,提升PHP-FPM的I/O和網絡性能(配置文件路徑:/etc/sysctl.conf):
fs.file-max = 100000(系統最大文件描述符數),ulimit -n 65535(當前會話限制)。net.core.somaxconn = 65535(監聽隊列最大長度),net.ipv4.tcp_max_syn_backlog = 65535(SYN隊列長度),net.ipv4.tcp_tw_reuse = 1(復用TIME-WAIT連接),net.ipv4.ip_local_port_range = 1024 65535(本地端口范圍)。sudo sysctl -p
減少數據庫和Web服務器之間的連接開銷:
fastcgi_keep_conn on;(Nginx配置示例)。PDO::ATTR_PERSISTENT => true開啟數據庫持久連接。top、htop查看CPU、內存使用情況,php-fpm status查看PHP-FPM進程狀態。slowlog = /var/log/php-fpm/slow.log,request_slowlog_timeout = 5s),定位性能瓶頸。unset()釋放不再使用的變量,采用生成器(yield)處理大數據集。SELECT *),使用連接池(如MySQL的wait_timeout調整),避免頻繁連接數據庫。以上優化方法需根據服務器硬件資源(CPU、內存、磁盤)和應用場景(高并發、大數據量)靈活調整,建議每次修改配置后重啟相關服務(systemctl restart php-fpm、systemctl restart nginx/apache)并測試效果。