我们要求立即从服务器向多个客户端(大约500个客户端)发送批量通知。我们已经实现了Node.js,但我们不确定性能瓶颈是什么,因为从所有客户端到服务器的Socket连接始终是打开的。我们将它用于Java Web应用程序
如果有人对此有任何曝光,请告诉我们
谢谢sai
答案 0 :(得分:0)
这个问题无法详细解答,因为您没有提供有关您的代码的详细信息,甚至没有提及任何代码示例。
但根据我的经验,当人们使用Node遇到并发问题时,他们应该轻松处理10,000个并发连接(参见this answer),那么通常的怀疑是他们正在使用阻塞函数调用。
您是否在应用中使用了任何屏蔽代码?如果是这样,那么这就是你的问题。如果您的Node应用程序中有任何阻止代码(比如调用名称中带有“Sync”的函数),那么您将遇到严重的并发问题。你不应该在事件循环的第一个刻度上使用阻塞函数(如果你不知道它意味着什么,那么你根本不应该使用它们。)
此外,既然你写的是你正在使用Node for Java Web应用程序,那么它可能会更复杂。如果您的Node应用程序连接到为每个连接生成新线程的Java应用程序,那么瓶颈可能在您的Java应用程序中,而不在您的Node应用程序中。由于您没有提供有关我们架构的详细信息,因此无法说明。但这是肯定的:如果你想处理大规模并发,那么你就不能使用线程。您需要使用事件循环。 nginx或Redis是单线程的原因。线程不会扩展,特别是对于I / O绑定的用例。分析您的代码,看看它是您需要修复的Java代码还是Node代码。