如何减少WebSocket IO长时间停顿?

问题描述

我有一个名为Tendermint的工具,该工具使用Golang编写。它处理事务并创建块(有意省略细节)。可以通过WebSocket服务器提交事务。块被配置为每秒创建一次。

现在,当我打开两个或多个WS连接并提交超出应用程序处理能力的事务时,Tendermint会被卡住。

long pauses

在此期间,它不会创建任何块,而是会花费大部分时间来处理WebSocket IO。

CPU profile

我仍然不了解这些暂停的确切性质。也许这里有人知道或可以提出正确的问题?另外,我想知道限制IO的方法是什么?节流每个连接?

注意:我正在将https://github.com/gorilla/websocket用于WebSockets。可以在here上找到我们的WS服务器。 谢谢您的时间!

UPD 1:通过在WS服务器中批量处理响应,我设法使暂停变得平坦(请参见https://github.com/tendermint/tendermint/issues/3905#issuecomment-684860429

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...