用户在Drupal中运行查询/视图时遇到问题,有时会导致我们的网站冻结。发生冻结是因为查询导致数据库连接数增加到400个以上,并且基本上在站点超过100个数据库连接的任何时候,站点都会严重减速,并且没有响应。
我们正在使用MySQL Red Hat Linux运行Amazon RDS
我们的前端应用服务器上有足够大的EC2,还有足够大的RDS。
我们现在解决此问题的方法是找到有问题的查询,然后将其杀死。一旦查询被终止,我们的数据库连接将下降到20左右,这是监视站点统计信息时看到的正常数量。
有没有办法停止令人讨厌的查询并在它运行太长时间并消耗连接之前将其杀死?我试图在错误查询发生之前自动将其杀死,或者至少在30秒后意识到错误查询并将其杀死。
3
通过自动化过程终止查询似乎是完全错误的方法……无论您的RDS实例实际上是否功能不足,导致初始堆积……还是您的应用程序中的逻辑有问题,似乎都在寻找实际问题与查询将是要做的事...
—
Michael-sqlbot
您可以使用具有基于PROCESSLIST的嗅探器的MONyog- MySQL Monitor来通知和杀死长时间运行的查询。它也适用于Amazon RDS。
—
Peter Venderberghe 2013年
不是MySql / Linux专家-您如何从一个网站获得100多个连接?我只做asp.net,我的任何页面一次只能打开一个连接-因此,这意味着同时处理100多个页面(实际上更多的是页面仅在需要时打开连接)。我将研究您处理连接的方法-效率极低。
—
TomTom
AWS会根据实例的大小设置最大连接数。他们使用的公式是:max_connections = {DBInstanceClassMemory / 12582880}请参阅参数组文档:https:
也许您应该考虑实现某种连接池。
—
mustaccio 2014年