MySQL 连接突然过多
MySQL Suddenly Too Many Connection
嗨,我有点混淆定义我的问题标题,但这是我的情况和问题:
我有一个由 PHP 和 MySQL 创建的云应用程序(我使用 Google Cloud SQL)
我的数据库每秒主动获取数千条新数据(包含我的很多用户位置和活动)
我创建了一个 PHP 程序来从这些数据中提取洞察力,查询如下:
SELECT username,time_of_activities FROM (table_name) WHERE latitude>=somevalue AND longitude>=somevalue
对于每个请求,我都会按顺序请求多个查询,其中每个查询将处理我数据库中的数百万行数据。 PHP 程序将显示一些与用户活动相关的洞察信息。
我的问题是:
有时 PHP 程序无法执行请求。当请求失败时,我检查了 CloudSQL 活动连接,活动连接在几秒钟内突然增加了 4000%。
一旦 PHP 请求失败,就会发生这种情况。一旦发生这种情况,数据库将始终 return "Too many connection" 错误,我需要手动重启 CloudSQL 实例。
有时这个PHP程序会成功运行,但有时不会并给出这样的问题。
所以我的问题是:怎么了?
注意。我已经放置了 mysql_close 函数来确保每次 PHP 成功执行查询时关闭连接。
更新问题:
我尝试检查我的数据库中的连接详细信息,我发现有很多 "Waiting for Insert" 发生,因为数据库每秒不断地通过插入查询获取新数据,同时我尝试 select数据。
这是导致我错误的原因吗?如果是的话,活动连接怎么会突然增加 4000% 倍,而在正常情况下,即使我不断地对数据库进行插入过程,我也只有 4-6 个活动连接?
谢谢
您是否将 mysql_close 放在 finally
语句中?
http://php.net/manual/en/language.exceptions.php
如果不放在一个finally
里面,如果程序内部出错,可能会执行不出来
嗨,我有点混淆定义我的问题标题,但这是我的情况和问题:
我有一个由 PHP 和 MySQL 创建的云应用程序(我使用 Google Cloud SQL)
我的数据库每秒主动获取数千条新数据(包含我的很多用户位置和活动)
我创建了一个 PHP 程序来从这些数据中提取洞察力,查询如下:
SELECT username,time_of_activities FROM (table_name) WHERE latitude>=somevalue AND longitude>=somevalue
对于每个请求,我都会按顺序请求多个查询,其中每个查询将处理我数据库中的数百万行数据。 PHP 程序将显示一些与用户活动相关的洞察信息。
我的问题是: 有时 PHP 程序无法执行请求。当请求失败时,我检查了 CloudSQL 活动连接,活动连接在几秒钟内突然增加了 4000%。
一旦 PHP 请求失败,就会发生这种情况。一旦发生这种情况,数据库将始终 return "Too many connection" 错误,我需要手动重启 CloudSQL 实例。
有时这个PHP程序会成功运行,但有时不会并给出这样的问题。
所以我的问题是:怎么了?
注意。我已经放置了 mysql_close 函数来确保每次 PHP 成功执行查询时关闭连接。
更新问题: 我尝试检查我的数据库中的连接详细信息,我发现有很多 "Waiting for Insert" 发生,因为数据库每秒不断地通过插入查询获取新数据,同时我尝试 select数据。
这是导致我错误的原因吗?如果是的话,活动连接怎么会突然增加 4000% 倍,而在正常情况下,即使我不断地对数据库进行插入过程,我也只有 4-6 个活动连接?
谢谢
您是否将 mysql_close 放在 finally
语句中?
http://php.net/manual/en/language.exceptions.php
如果不放在一个finally
里面,如果程序内部出错,可能会执行不出来