最近我开始使用New Relic来分析我的应用程序,我遇到了一些特殊的东西。我的应用程序每隔一段时间会挂起15-20秒然后失败。挖掘我发现percona mysql的createConnection方法在我的Laravel5应用程序中超时。
以下是Laravel5源码中的违规方法: https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Connectors/Connector.php#L48-L63
我的堆栈中有两个实例运行相同的应用程序。每个人每分钟对数据库执行大约100-400次调用,具体取决于负载均衡器是否指向该特定实例。
我想知道是否有办法阻止这种情况发生。我有一些想法:
非常感谢您的想法和想法。
答案 0 :(得分:0)
经过大量的实验后,我得出结论,在我们的MySQL PDO连接中打开Persistent Connections就是答案。根据我所读到的内容,我有很多关于打开它们的保留意见。但在阅读了这篇文章:Persistent DB Connections - Yea or Nay?和史蒂夫科罗纳的书" Scaling PHP Applications"之后,打开持久连接就是要走的路。