Laravel createConnection Timing Out

时间:2015-09-22 16:09:07

标签: php mysql laravel pdo laravel-5

最近我开始使用New Relic来分析我的应用程序,我遇到了一些特殊的东西。我的应用程序每隔一段时间会挂起15-20秒然后失败。挖掘我发现percona mysql的createConnection方法在我的Laravel5应用程序中超时。

以下是Laravel5源码中的违规方法: https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Connectors/Connector.php#L48-L63

以下是失败的事务跟踪的图片: Transaction Trace with createConnection hang

我的堆栈中有两个实例运行相同的应用程序。每个人每分钟对数据库执行大约100-400次调用,具体取决于负载均衡器是否指向该特定实例。

我想知道是否有办法阻止这种情况发生。我有一些想法:

  • 打开PDO连接的持久连接。
  • 更改MySQL设置,不知道哪个。 (如果您想查看当前选项,请告诉我)。
  • 在5秒后将PHP设置为超时以停止当前连接。

非常感谢您的想法和想法。

1 个答案:

答案 0 :(得分:0)

经过大量的实验后,我得出结论,在我们的MySQL PDO连接中打开Persistent Connections就是答案。根据我所读到的内容,我有很多关于打开它们的保留意见。但在阅读了这篇文章:Persistent DB Connections - Yea or Nay?和史蒂夫科罗纳的书" Scaling PHP Applications"之后,打开持久连接就是要走的路。

相关问题