優化 CentOS 上的 LNMP(Linux, Nginx, MySQL/MariaDB, PHP)環境中的數據庫連接,可以從多個方面入手,包括配置優化、性能調優、硬件資源管理等。以下是一些詳細的優化建議:
my.cnf
或 my.ini
配置文件編輯 /etc/my.cnf
或 /etc/mysql/my.cnf
文件,根據服務器的硬件和應用需求進行調整。
[mysqld]
# 基本設置
bind-address = 0.0.0.0 # 允許遠程連接
port = 3306
socket = /var/lib/mysql/mysql.sock
# 連接數設置
max_connections = 500
thread_cache_size = 50
table_open_cache = 2000
table_definition_cache = 1000
# 查詢緩存
query_cache_size = 64M
query_cache_type = 1
# 緩沖區和緩存
innodb_buffer_pool_size = 70% of total RAM
innodb_log_file_size = 256M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1
# 日志設置
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-queries.log
long_query_time = 2
# 其他優化
skip-name-resolve # 如果不需要DNS解析,可以跳過
sudo systemctl restart mysqld
nginx.conf
配置文件編輯 /etc/nginx/nginx.conf
文件,確保連接數和緩沖區大小適當。
events {
worker_connections 1024; # 根據服務器性能調整
}
http {
...
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
...
}
sudo systemctl restart nginx
php.ini
配置文件編輯 /etc/php.ini
文件,調整與數據庫連接相關的參數。
max_execution_time = 30
memory_limit = 128M
post_max_size = 8M
upload_max_filesize = 2M
; PDO 設置
pdo_mysql.default_socket = /var/lib/mysql/mysql.sock
sudo systemctl restart php-fpm
對于高并發應用,使用數據庫連接池可以有效減少連接開銷。例如,使用 mysqli
或 PDO
的持久連接功能。
$mysqli = new mysqli('localhost', 'user', 'password', 'database', 3306, '/var/run/mysqld/mysqld.sock');
使用工具如 mysqltuner.pl
或 pt-query-digest
來分析和優化數據庫性能。
wget http://mysqltuner.pl/mysqltuner.pl -O mysqltuner.pl
perl mysqltuner.pl
確保服務器有足夠的內存、CPU 和磁盤I/O 資源??紤]使用 SSD 硬盤以提高數據庫讀寫速度。
定期備份數據庫,并確保數據庫連接的安全性,例如使用 SSL 加密連接。
通過以上步驟,可以顯著優化 CentOS 上的 LNMP 環境中的數據庫連接性能。根據具體應用的需求和服務器的硬件配置,可能需要進一步調整和優化。