我正在使用节点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/ 使用免费许可证密钥。
1条答案
按热度按时间r8xiu3jd1#
对于将来面临此问题的用户:请将uv\u threadpool\u size设置为大于4的值,作为节点应用程序中的环境变量。
说明:
每个节点进程将至少运行uv\u threadpool\u size+v8\u thread\u pool\u size+1个线程。
uv\线程池\大小和v8\线程池\大小的当前默认值均为4。
资料来源:Link2