我有一个快速应用程序通过node-mongodb-native驱动程序与 mongodb 对话。我的应用程序中的某些请求间歇性地变慢。有什么好的工具或策略来确认或排除驱动程序连接池大小作为瓶颈?
这里有一些关于调整池大小的讨论,但还没有定论。aheckmann 指出,默认值 5 通常已经足够了,而 tinana 则通过增加大量并发请求的池来获得显着收益。
更新: 这个问题是为了帮助我了解调整和工具驱动程序池的大小,而不是解决直接的性能问题。我描述我的问题只是为了给这个问题一点背景。
我有一个快速应用程序通过node-mongodb-native驱动程序与 mongodb 对话。我的应用程序中的某些请求间歇性地变慢。有什么好的工具或策略来确认或排除驱动程序连接池大小作为瓶颈?
这里有一些关于调整池大小的讨论,但还没有定论。aheckmann 指出,默认值 5 通常已经足够了,而 tinana 则通过增加大量并发请求的池来获得显着收益。
更新: 这个问题是为了帮助我了解调整和工具驱动程序池的大小,而不是解决直接的性能问题。我描述我的问题只是为了给这个问题一点背景。
在这种情况下,第一步总是从数据库开始。
如果您有响应缓慢的查询,这些查询应该出现在慢速日志中。查看官方文档进行分析。“慢”查询的默认值约为 100 毫秒,因此如果您的慢查询是因为数据库,您将在那里看到证据。
此外,请查看数据库的图表。“图表”是指服务器正在执行的 Nagios/Cacti/Zabbix/ServerDensity/MMS 图表。如果您没有这些,请从那里开始。如果您实际上不知道您有多少个连接或您的 CPU 是什么样子,那么调整连接池大小是没有用的。
有什么好的工具或策略来确认或排除驱动程序连接池大小作为瓶颈?
一旦排除了数据库并配置了监控,就可以打开连接池大小。一旦你把这一切都准备好了。您将能够调整池大小并确保您已经 (a) 解决了问题并且 (b) 没有引起更多问题。
整个周期很重要。
如果你搞砸了连接池,但你没有观察慢日志和总连接数,那么你只会导致更多问题。