Mysql 连接正在快速增加,包括查询
Mysql Connection is rapidly increasing including Queries
我在 Codeigniter (PHP 5.5 - MYSQLi 5.6) 上构建了 Rest api。
一次 Api 调用触发了 8 个查询。调用其他 api 时连接会增加,而连接根本不会减少。
对于 4 个用户,查询和连接增加到 25-32。我想知道如何减少连接和查询。
我有这个场景-
MY_MODEL 扩展了 CI_MODEL,USER_DB 扩展了 MY_MODEL,USER_MODEL 扩展了 User_DB。我怀疑构造函数链接中有任何问题。请推荐
- 连接和查询正在增加 rapidly。
- 在配置文件中使用了持久连接没有用。
- 如何减少触发的 mysqli 连接和查询。
- 我是否必须在每次 api 调用后强制关闭连接,还是应该将其留给 Codeigniter。
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 查询!但是因为你没有提供任何相关信息...
我在 Codeigniter (PHP 5.5 - MYSQLi 5.6) 上构建了 Rest api。 一次 Api 调用触发了 8 个查询。调用其他 api 时连接会增加,而连接根本不会减少。
对于 4 个用户,查询和连接增加到 25-32。我想知道如何减少连接和查询。
我有这个场景- MY_MODEL 扩展了 CI_MODEL,USER_DB 扩展了 MY_MODEL,USER_MODEL 扩展了 User_DB。我怀疑构造函数链接中有任何问题。请推荐
- 连接和查询正在增加 rapidly。
- 在配置文件中使用了持久连接没有用。
- 如何减少触发的 mysqli 连接和查询。
- 我是否必须在每次 api 调用后强制关闭连接,还是应该将其留给 Codeigniter。
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 查询!但是因为你没有提供任何相关信息...