ubuntu

ubuntu中php-fpm如何优化数据库连接

小樊
50
2025-04-27 19:37:34
栏目: 编程语言

在Ubuntu系统中,优化PHP-FPM与数据库的连接可以通过以下几个方面来实现:

  1. 使用持久连接(Persistent Connections)

在PHP代码中,使用持久连接可以减少与数据库建立和关闭连接的开销。在PDO连接字符串中添加pdo_mysql.persistent=true参数,或者在mysqli扩展中使用p:前缀。

例如,使用PDO:

$dsn = 'mysql:host=localhost;dbname=mydb;charset=utf8mb4';
$username = 'username';
$password = 'password';
$options = [
    PDO::ATTR_PERSISTENT => true,
];

try {
    $pdo = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

使用mysqli:

$mysqli = new mysqli('p:localhost', 'username', 'password', 'mydb');
if ($mysqli->connect_error) {
    echo 'Connection failed: ' . $mysqli->connect_error;
}
  1. 调整PHP-FPM配置

编辑/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
  1. 调整MySQL配置

编辑/etc/mysql/my.cnf文件,调整以下参数:

例如:

[mysqld]
max_connections = 300
wait_timeout = 60
interactive_timeout = 60
  1. 使用连接池

可以考虑使用连接池来管理数据库连接,例如使用php-mysqlnd-ms扩展。连接池可以在应用程序启动时创建一定数量的数据库连接,并在需要时分配给应用程序使用,从而减少连接的创建和关闭开销。

  1. 优化查询

优化数据库查询,避免使用大量的JOIN操作、子查询和临时表,尽量使用索引来提高查询性能。

通过以上方法,可以在Ubuntu系统中优化PHP-FPM与数据库的连接,提高应用程序的性能。

0
看了该问题的人还看了