由于我们运行的PHP-FPM子节点数导致多个Mongo副本集的连接峰值,我们目前面临着问题。有了16个前端服务器,我们看到峰值一直到20K连接,有效地使我们的Mongo集群崩溃。
我们被告知只有两个可行的选项是A,限制PHP-FPM工作者(我们尝试过的东西,这只会导致错误的10GB错误日志告诉我们提高工作人员的最大数量)或者为我们的每个应用服务器添加一个mongos服务器,因为它内置了连接池。
我们目前无法弄清楚如何转换我们当前的连接字符串,以便与mongos一起使用。
我们的连接字符串如下所示:
mongodb://admin:<password>@SG-cache1-2342.servers.xxx.com:27017,SG-cache1-2343.servers.xxx.com:27017,SG-cache1-2344.servers.xxx.com:27017/admin?replicaSet=RS-cache1-0
我们如何将此字符串转换为mongos接受的正确格式。我们已经尝试了字符串的所有可能组合,添加和删除片段,但它们最终都失败了。
答案 0 :(得分:1)
连接到mongos时,您不再连接到ReplicaSet。这意味着应省略replicaSet
选项。
此外,mongos背后的配置服务器已配置完全了解您的ReplicaSet - 因此您不需要告诉mongos有关ReplicaSet服务器的任何信息。
正确的连接字符串是:
mongodb://admin:<password>@mongos1.servers.xxx.com:27017/admin
您可以列出多个这样的mongos服务器:
mongodb://admin:<password>@mongos1.servers.xxx.com:27017,mongos2.servers.xxx.com/admin