在 Ubuntu 下,優化 PHP-FPM 以更好地處理數據庫連接可以通過多種方式實現。以下是一些常見的優化策略:
編輯 PHP-FPM 的配置文件(通常位于 /etc/php/7.x/fpm/pool.d/www.conf
或 /etc/php/8.x/fpm/pool.d/www.conf
),進行以下調整:
增加進程數:
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
根據服務器的 CPU 和內存資源調整這些參數。
調整請求隊列長度:
request_terminate_timeout = 0
這可以防止長時間運行的請求占用資源。
在 PHP 腳本中使用持久連接(persistent connections)可以減少每次請求時建立和關閉數據庫連接的開銷。例如,使用 mysqli
或 PDO 時:
$mysqli = new mysqli('p:localhost', 'user', 'password', 'database');
對于高并發環境,使用數據庫連接池可以有效管理數據庫連接。例如,使用 php-mysqlnd-ms
擴展:
sudo apt-get install php-mysqlnd-ms
然后在 php.ini
中配置:
[mysqlnd_ms]
ms_driver = mysqlnd_ms
ms_servers = "localhost:3306"
在 PHP 腳本中使用:
$pool = new MsSqlServer('default');
$conn = $pool->getConnection();
確保數據庫查詢是優化的,使用索引,避免全表掃描,減少查詢時間。
啟用 PHP-FPM 和數據庫的監控和日志功能,以便及時發現和解決問題。例如,使用 journalctl
查看 PHP-FPM 日志:
sudo journalctl -u php7.x-fpm
使用緩存系統(如 Redis 或 Memcached)來緩存頻繁訪問的數據,減少數據庫查詢次數。
定期重啟 PHP-FPM 可以清理一些資源,但要注意不要過于頻繁,以免影響服務穩定性。
sudo systemctl restart php7.x-fpm
根據需要調整 MySQL 的配置文件(通常位于 /etc/mysql/my.cnf
或 /etc/mysql/mysql.conf.d/mysqld.cnf
),例如:
增加連接數:
max_connections = 500
調整緩沖區大小:
innodb_buffer_pool_size = 1G
通過這些優化策略,可以顯著提高 PHP-FPM 在處理數據庫連接時的性能和穩定性。