首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >持久连接和max_user_connections

问持久连接和max_user_connections
EN

Stack Overflow用户
提问于 2013-04-23 19:33:32
回答 2查看 1.1K关注 0票数 0

我需要一些信息尽快帮我解决一个问题。我用PHP设计了一个应用程序,它可以查询mysql数据库并返回json格式的响应。我已经在pylot和apache jmeter中对json响应进行了负载测试,测试结果很好。我使用的是PHP的PDO持久连接。但是,即使连接是持久的,我仍然被拒绝连接到数据库,并显示以下错误。

代码语言:javascript
复制
[23-Apr-2013 12:11:53] SQLSTATE[42000] [1203] User user already has more than 'max_user_connections' active connections

我曾认为持久连接可以缓解这一问题,但看起来它们被忽略了。任何建议都将不胜感激。

代码语言:javascript
复制
$DBH = null;

$host = "localhost";
$db_name = "my_db";
$user_name = "user";
$pass_word = "password";

try {
  # MySQL with PDO_MYSQL
  $DBH = new PDO("mysql:host=$host;dbname=$db_name;charset=utf8", $user_name, $pass_word, array(PDO::ATTR_PERSISTENT => true, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
  $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch(PDOException $e) {
    error_log( $e->getMessage(), 0 );
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-23 19:37:55

如果您的目的是减少连接数量,那么使用pconnect将是错误的想法,因为它实际上会增加连接数量。

因此,为了解决这个问题,您必须在mysql服务器配置中增加max_user_connections的数量,以匹配Apache线程/nginx工作线程的数量。

如果你不能增加max_user_connections的数量,那么你就不应该使用持久连接。

就这样。

票数 0
EN

Stack Overflow用户

发布于 2013-04-23 19:44:22

根据我多年来的个人经验,PHP脚本中的持久连接并不能缓解*max_user_connection*错误消息。相反,他们往往是原因。

不管是什么原因,连接池并没有像广告中所说的那样工作。PHP往往会打开新的连接,即使有空闲的连接也是如此。因此,一个相对较低的流量应用程序最终会耗尽最大流量( 90%的连接什么都不做)。

如果该功能存在,则必须存在其正常工作的场景。也许问题是它只在某些平台或SAPI上正确工作。无论如何,我建议你禁用持久连接,并监控你的应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16168310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档