在Ubuntu系統中,優化PHP-FPM與MySQL的連接可以通過以下幾個方面來實現:
編輯/etc/php/7.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資源進行調整。
在/etc/php/7.x/fpm/php.ini
文件中,調整以下參數:
request_terminate_timeout = 60s
編輯/etc/mysql/my.cnf
或/etc/mysql/mysql.conf.d/mysqld.cnf
文件,調整以下參數:
[mysqld]
max_connections = 500
根據服務器的內存和CPU資源進行調整。
在/etc/mysql/my.cnf
或/etc/mysql/mysql.conf.d/mysqld.cnf
文件中,調整以下參數:
wait_timeout = 300
interactive_timeout = 300
在PHP代碼中使用持久連接可以減少連接的建立和關閉次數,提高性能。例如:
$mysqli = new mysqli('p:localhost', 'user', 'password', 'database');
對于高并發場景,可以考慮使用連接池來管理數據庫連接。例如,使用mysqli
擴展的連接池功能:
$mysqli = new mysqli('p:localhost', 'user', 'password', 'database');
$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5);
確保SQL查詢是優化的,使用索引,避免全表掃描??梢允褂?code>EXPLAIN關鍵字來分析查詢計劃。
定期監控PHP-FPM和MySQL的性能指標,查看連接數、響應時間等??梢允褂霉ぞ呷?code>top、htop
、mysqladmin
等。
對于不經常變化的數據,可以使用緩存(如Redis、Memcached)來減少對數據庫的直接訪問。
根據需要調整操作系統的網絡參數,例如:
sudo sysctl -w net.core.somaxconn=1024
sudo sysctl -w net.ipv4.tcp_max_syn_backlog=1024
sudo sysctl -w net.ipv4.ip_local_port_range="1024 65535"
通過以上步驟,可以有效地優化Ubuntu系統中PHP-FPM與MySQL的連接,提高系統的性能和穩定性。