RDS Mysql 中的连接选项和处理许多连接的最佳方式
Connections Option in RDS Mysql and best way to handle many connections
在下图中,当前 activity 显示为 99 个连接。
具体是怎么算的。
RDS 通过 node.js 网络服务、php 网站访问。每次我做一些操作时,我都会关闭连接。所以一旦关闭它就不会减少,而是会不断增加。后来,当连接数变为 608 时,我收到了太多连接错误消息。我重新启动,然后它就可以工作了。我从未见过它减少。
那么我能处理它的最佳方法是什么。
下面是我 运行 SHOW FULL PROCESSLIST;
时显示的图像
使用 MySQL 连接的基于 PHP 的网页通常会在完成呈现页面内容后立即退出,因此无论您显式调用 mysqli 还是 PDO close,连接都会关闭方法与否。
Node 服务并非如此,运行 很长一段时间,因此很容易泄漏资源。您可能在 Node 服务中打开连接,但没有关闭它们,这会产生您在此处看到的那种行为。 (这是一个很容易犯的错误,尤其是对于我们这些背景主要是更短暂的 PHP 脚本的人来说。)
识别问题的一个好方法是通过 Workbench 或控制台监视器连接到 MySQL 实例并发出 SHOW FULL PROCESSLIST;
以获取当前活动连接的列表,它们的始发主机,以及它们正在执行的查询(如果有的话)。这可能会帮助您缩小连接泄漏的来源范围,以便您可以找出有问题的代码并进行修复。
在下图中,当前 activity 显示为 99 个连接。 具体是怎么算的。
RDS 通过 node.js 网络服务、php 网站访问。每次我做一些操作时,我都会关闭连接。所以一旦关闭它就不会减少,而是会不断增加。后来,当连接数变为 608 时,我收到了太多连接错误消息。我重新启动,然后它就可以工作了。我从未见过它减少。
那么我能处理它的最佳方法是什么。
下面是我 运行 SHOW FULL PROCESSLIST;
时显示的图像PHP 的网页通常会在完成呈现页面内容后立即退出,因此无论您显式调用 mysqli 还是 PDO close,连接都会关闭方法与否。
Node 服务并非如此,运行 很长一段时间,因此很容易泄漏资源。您可能在 Node 服务中打开连接,但没有关闭它们,这会产生您在此处看到的那种行为。 (这是一个很容易犯的错误,尤其是对于我们这些背景主要是更短暂的 PHP 脚本的人来说。)
识别问题的一个好方法是通过 Workbench 或控制台监视器连接到 MySQL 实例并发出 SHOW FULL PROCESSLIST;
以获取当前活动连接的列表,它们的始发主机,以及它们正在执行的查询(如果有的话)。这可能会帮助您缩小连接泄漏的来源范围,以便您可以找出有问题的代码并进行修复。