我有一个在两个不同的服务器上运行的 RoR 应用程序。它们运行相同版本的应用程序并且配置相似。我有一个 Mongodb 副本集在两个服务器上运行,第三个服务器作为任意服务器。
一切运行良好。数据同步完美。但运行 2 周后,其中一台服务器开始出现 ConnectionPool::PoolShuttingDownError。我检查了日志,我可以看到应用程序控制器引发了错误。我没有更改任何服务器上的任何代码。
引发错误的服务器很好,直到它同时收到 6-7 个请求。或者当您一起刷新页面 6-7 次时。它会一次又一次地出现此错误,您会刷新页面并使其恢复正常。这很奇怪,我不明白为什么一台服务器有这个问题,而另一台没有,而且有时也是如此。
我在 Moped、Rails 4.1.0 和 Ruby 2.1.5 中使用 Mongoid。我还使用大约 51158 的 db.serverStatus().connections 检查了可用连接,最大进程的 ulimit 为 257185。
我搜索了很多,但我仍然不确定这个问题的原因。如果有人能对这个问题有所了解,那就太好了。任何帮助将不胜感激。提前致谢。