Я сталкиваюсь со странным поведением, которое не могу объяснить, у меня кластер GKE из 1 экземпляра (2 процессора, 4 ГБ памяти), который содержит 1 службу nodeJS приложения с 2 репликами, которые содержат 1 функцию:
const req = client.get("https://myextrenalapi.com", opts, (res) => {
let responseBody = ''
res.socket.setNoDelay();
res.on('data', (chunk) => { responseBody += chunk })
res.on('end', () => {
return responseBody;
})
})
теперь, после начала загрузки этого сервера со скоростью около 130 об / мин, он начинает работать медленно, и запрос http-клиента занимает более 10 секунд (300 мс).
НО, когда я пытаюсь CURL из одного из моих узлов (во время стресс-теста): https://myextrenalapi.com на запросы уходит 300 мс, так почему же curl делает это за 300 мс, а для nodeJS http-клиента это занимает более 10 секунд?
Я добавил протоколирование к http-клиенту во время стресс-теста:
{"dnsLookup":194,"tcpConnection":6875,"tlsHandshake":9206,"firstByte":10746,"end":10746}
есть идеи, почему это так медленно останавливает CURL при высокой нагрузке? я попробовал почти все в nodeJS стороне, я изменил maxTcpConnection, keep-alive, полностью удалил агента, но результаты почти одинаковы для всех senar ios