Подтвердить что ты не робот

Запросы и соединения удваиваются на node 4.1.2

В настоящее время мы обновляемся с node 0.10 до node 4.1.2, и мы видим некоторые странные шаблоны. Количество подключений к нашей базе данных postgres удваивается 1, и мы видим тот же шаблон с запросами внешних служб 2. Мы запускаем кластерное приложение, использующее собственный API-интерфейс кластера, и количество рабочих одинаково для обеих версий.

Я не понимаю, почему обновление языка выполнения, по-видимому, изменит поведение приложения, удвоив запросы на внешние службы.

Postgres connections Внешние запросы

4b9b3361

Ответ 1

Одна из интересных вещей, которые я заметил с 0.12 и 4.x, - это изменение в сборке мусора. Я раньше не использовал модуль pg, поэтому не знаю, как он поддерживает пулы, если он будет зависеть от памяти или сбора мусора. Если вы не определили настройку памяти по умолчанию для node, вы можете попробовать сделать это и посмотреть, есть ли другие результаты.

node --max_old_space_size <some sane value in MB>

Ответ 2

Я столкнулся с чем-то похожим, но я получал двойные записи файлов. Я не знаю вашего точного дела, но я видел сценарий, когда запросы могли почти точно удвоиться.

в обновлении до 4.1.2, process.send и child.send перешел от синхронно к асинхронному.

Я нашел такую ​​проблему:

var child = fork('./request.js');
var test = {};

child.send(small request);
child.send(large request);
child.on('response', function (val) {
    console.log('small request came back: ' + val);
    test = val;
});

if(!test){
   //retry request
} ...

Итак, где, как и ранее, блокирующие отправки позволяют этому коду работать, неблокирующая версия предполагает, что произошла ошибка, и повторяет попытку. На самом деле ошибка не произошла, поэтому в два раза поступают запросы.