如果使用节点rdkafka创建的使用者示例超过3个,则网络超时错误

wh6knrhe  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(477)

我正在使用节点rdkafka连接到云vm上托管的kafka示例。我有多个使用者,每个使用者都使用以下kafka配置:

"group.id": "librd-test",
"metadata.broker.list": `${process.env.KAFKA_HOST}:9092`,
"socket.keepalive.enable": true,
'enable.auto.commit': true,
"debug": "all"

只有5个主题,只有创建少于4个使用者示例时,我的使用者代码才能正常工作。如果我添加了3个以上,我的nodejs express服务器会在任何外部请求时返回timeout。例如,我正在一个使用者中执行一个伪api调用获取:

const tmp = await fetch('https://jsonplaceholder.typicode.com/todos/1', {timeout: 10000})
                .then(response => response.json());

如果我创建了3个以上的使用者示例,这段代码就会神秘地超时。尽管如此,如果有3个或少于3个使用者示例,它的效果非常好。上述fetch调用在使用者的数据事件中调用:

consumer.on("data", async function (m) {
        counter++;
        consumer.commit(m);
        // Fetch Call
        const tmp = await fetch('https://jsonplaceholder.ty....

为什么我在添加更多消费者时会遇到这些网络超时?
我尝试过的事情:
更改使用者组名称。
向特定主题添加更多分区。
用于托管Kafka:iam使用https://lenses.io/box/ 使用免费许可证密钥。

r8xiu3jd

r8xiu3jd1#

对于将来面临此问题的用户:请将uv\u threadpool\u size设置为大于4的值,作为节点应用程序中的环境变量。
说明:
每个节点进程将至少运行uv\u threadpool\u size+v8\u thread\u pool\u size+1个线程。
uv\线程池\大小和v8\线程池\大小的当前默认值均为4。
资料来源:Link2

相关问题