Mysql 连接正在快速增加,包括查询

Mysql Connection is rapidly increasing including Queries

我在 Codeigniter (PHP 5.5 - MYSQLi 5.6) 上构建了 Rest api。 一次 Api 调用触发了 8 个查询。调用其他 api 时连接会增加,而连接根本不会减少。

对于 4 个用户,查询和连接增加到 25-32。我想知道如何减少连接和查询。

pconnect在你的情况下是正确的,也就是说,你的设置是使用持久连接。在这种情况下,无论何时创建新连接,连接数都会增加。在这种情况下,您需要关闭连接。您也可以将 pconnect 设置为 false,但在执行之前需要考虑一下。在某些情况下,您可能需要持久连接。看这里:

Advantages / Disadvantages of pconnect option in CodeIgniter

如果你运行在裸 Apache 上安装你的 php,那你就错了。

给定许多小查询的典型 Web 工作负载,您的数据库将在每个核心 1-2 个线程的情况下处于最佳状态。如果让它增长到 10 或更多,首先它会消耗更多的 RAM,然后你将需要担心更多的锁定。

出于类似的原因,您的 Web 服务器将更加快速,每个内核有 1-3 PHP 个进程,而不是几百个。

一个简单的设置方法是 运行 您的 php 在 fastcgi 模式下使用像 lighttpd 或 nginx 这样的服务器。这些服务器将处理长而慢的 HTTP 连接,收集请求数据,然后快速 运行 PHP 代码,缓冲响应,并释放 php 解释器和数据库连接通过客户端的 HTTP 连接响应。

然后您可以将 lighttpd 配置中的 fastcgi 进程数量限制设置为较小的值,例如每个内核 3 个。这也会限制您的持久数据库连接。

当然,您应该优化 SQL 查询!但是因为你没有提供任何相关信息...