Java 如何提高WebSocket吞吐量
我需要从许多通过web套接字连接到java服务器的客户机中提取数据 有很多web套接字实现,我选择了vert.x。 我做了一个简单的演示,在那里我听json的文本帧,用jackson解析它们并发送响应。Json解析器对吞吐量没有显著影响 我有2个或10个客户,总速度为每秒2.5公里 然后我尝试使用缓冲,客户端不等待每个响应,而是在服务器确认后发送一批消息(30k-90k),速度提高到每秒8k 我看到java进程有一个CPU瓶颈—1个内核被100%使用。 平均而言,nodejs客户端cpu消耗仅为5%。 即使只有一个客户端,服务器也会吃掉几乎整个内核 您认为值得尝试其他websocket实现,如jetty吗? 有没有办法用多核来扩展vert.xJava 如何提高WebSocket吞吐量,java,performance,websocket,vert.x,java-websocket,Java,Performance,Websocket,Vert.x,Java Websocket,我需要从许多通过web套接字连接到java服务器的客户机中提取数据 有很多web套接字实现,我选择了vert.x。 我做了一个简单的演示,在那里我听json的文本帧,用jackson解析它们并发送响应。Json解析器对吞吐量没有显著影响 我有2个或10个客户,总速度为每秒2.5公里 然后我尝试使用缓冲,客户端不等待每个响应,而是在服务器确认后发送一批消息(30k-90k),速度提高到每秒8k 我看到java进程有一个CPU瓶颈—1个内核被100%使用。 平均而言,nodejs客户端cpu消耗仅为
在我将日志级别从debug更改为info之后,我有70k。调试级别导致vert.x为每个帧打印消息。可以通过配置DeploymentOptions等方式指定verticle(线程)实例的数量
您可以在一台机器上创建超过60k个连接,因此我假设一个连接的平均时间不到一秒钟。这是你在生产中期望的情况吗?要比较其他解决方案,您可以尝试运行一些听起来不正确的解决方案。这是非常低的性能。听起来vert.x的并行化配置不正确。您是否只使用一条垂直线(线) Kaazing网关是首批WS实现之一。默认情况下,它使用多个内核,并可进一步配置线程等。我们有用户使用它进行大规模物联网部署,因此您的问题不是JVM。 如果您感兴趣,以下是github回购协议: 充分披露:我为Kaazing工作