Мой порожденный процесс узла всегда спит - PullRequest
0 голосов
/ 10 марта 2019

Я запускаю программу на своем экземпляре AWS, которая имеет 4 ядра. (NODE v8.10) Программа работает по таймеру и, например, каждые 15 минут обрабатывает разные документы. Все документы локально готовы на сервере при запуске программы.

По некоторым причинам, я замечаю, что обычно работает только один процесс узла, в то время как остальные процессы узла спят. Иногда я вижу, как другие узлы переходят из режима ожидания в режим ожидания в течение мс. Из-за этого обработка действительно медленная / противоречивая. Иногда документ может быть обработан за несколько минут, иногда часов.

Почему это происходит? Я ожидаю, что на 4-ядерном компьютере будет запущено более одного параллельного узла. Не должно быть никакого ожидания, потому что каждый узел - это свой собственный процесс.

function runOnTimer(key){
  let args = ['--max-old-space-size=6144','./runScript', key]
  const logfile = path.join(appRoot, `/log/${key}.log`)
  let feedLog = fs.openSync(logfile, 'a');
  let feedSpawn = spawn(`node`, args, {
        stdio: ['ignore', feedLog, feedLog]
  });
  feedSpawn.on('error', err => {
    feed.log(`failed: ${err.message}`)    
  })

  feedSpawn.on('exit', code => {
    feed.log(`exited with code: ${code}`)
    if(feedLog !== undefined){
      fs.closeSync(feedLog);
    }    
  });
}

enter image description here

...