Я запускаю программу на своем экземпляре 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);
}
});
}