我们的这个架构有2个节点进程. 一个轮询私有API并将更改推送到第二个节点(如果有). 第二个节点处理数据并调用一堆其他API,并最终向客户端发送一个更改事件,一个HTML5网站,带有socket
一个轮询私有API并将更改推送到第二个节点(如果有).
第二个节点处理数据并调用一堆其他API,并最终向客户端发送一个更改事件,一个HTML5网站,带有socket.io
第二个节点将始终处理数据,即使没有连接客户端也将始终发出更改.所以在我看来,CPU或内存使用量并没有受连接客户端数量的影响.另请注意,此体系结构仍在私有临时环境中运行.
一切都运行正常,我们准备上线,直到我们注意到几天,也许一周后,第二个节点突然变得非常慢,而第一个节点仍然很好.
它变得非常糟糕,即使两个节点之间的连接超时,它们也通过localhost在同一网络上.浏览socket.io/socket.io.js文件也需要10秒以上的时间.
我知道很难在没有看到任何代码的情况下理解这个问题,但我有点拉扯我的头发,因为我们必须在几天内上线,我的日志没有透露任何东西,谷歌也没有帮助.
什么是建设的好习惯你有过这样的经历吗?问题是什么,你是如何解决的?
什么是node.js的好监视器和分析器? (最好是免费的)
构建node.js应用程序的好方法是什么,可以进行大量的传出API调用?
任何能够帮助我找到解决甚至发现实际问题的正确方向的人都将不胜感激!
谢谢!
从未经历过这样的事情,但可能是第二个节点通过进行CPU密集型工作或同步等待某些资源来阻止事件循环.在代码中添加一些日志记录,以查看第二个节点处理第一个节点推送的每个更改所花费的时间.可能是某种类型的更改消耗CPU 10秒左右才能完成.
您还应该开始监视内存,CPU和网络连接.当事情变慢时,您的监控将提供一些关于瓶颈位置的线索.
对于监控,您可以尝试以下3种工具
> nodetime
> hummingbird
> node-monitor
另请阅读http://nodetime.com/blog/monitoring-nodejs-application-performance