Сразу после запуска приложения все выглядит нормально, все четыре ядра онлайн работают в режиме кластера. Два ядра имеют одинаковые названия, остальные два отличаются. Вот файл экосистемы. json:
{ 'apps': [
{
'name': 'CHS',
'script': './main.js',
'out_file': '../logs/appname.log',
'error_file': '../logs/appname.log',
'log_date_format' : 'YYYY-MM-DD HH:mm:ss Z',
'rotateModule': true,
'compress': true,
'dateFormat': 'YYYY-MM-DD',
'max_size': '10M',
'retain': 300,
'log_date_format' : 'YYYY-MM-DD HH:mm:ss Z',
'merge_logs': true,
'env': {
'NODE_ENV': 'production',
'METEOR_SETTINGS': '{ ... }'
},
'env_production': {
'NODE_ENV': 'production'
},
'instances': '1',
'exec_mode': 'cluster'
},
{
'name': 'ORC',
'script': './main.js',
'out_file': '../logs/appname.log',
'error_file': '../logs/appname.log',
'log_date_format' : 'YYYY-MM-DD HH:mm:ss Z',
'rotateModule': true,
'compress': true,
'dateFormat': 'YYYY-MM-DD',
'max_size': '10M',
'retain': 300,
'merge_logs': true,
'env': {
'NODE_ENV': 'production',
'METEOR_SETTINGS': '{ ... }'
},
'env_production': {
'NODE_ENV': 'production'
},
'instances': '1',
'exec_mode': 'cluster'
},
{
'name': 'WCR',
'script': './main.js',
'out_file': '../logs/appname.log',
'error_file': '../logs/appname.log',
'log_date_format' : 'YYYY-MM-DD HH:mm:ss Z',
'rotateModule': true,
'compress': true,
'dateFormat': 'YYYY-MM-DD',
'max_size': '10M',
'retain': 300,
'merge_logs': true,
'env': {
'NODE_ENV': 'production',
'METEOR_SETTINGS': '{ ... }'
},
'instances': '2',
'exec_mode': 'cluster'
}
]
}
Через несколько секунд после запуска ядро CHS по какой-то причине не выполняет какой-либо код (без каких-либо ошибок), а остальные три работают нормально. Я попытался переупорядочить ядра в экосистеме. json, добавить «pmx»: false (для некоторых онлайн-предложений, чтобы избежать некоторых частей в самом pm2), переименовать ядра и некоторые другие вещи, но проблема была та же. Я пытался убедиться, что в коде приложения нет ничего, что могло бы вызвать эту проблему, я искал ошибки в журналах, и это только у меня (в журналах pm2):
2020-04-17T14:16:49: PM2 error: (node:3720) [DEP0007] DeprecationWarning: worker.suicide is depricated. Please use worker.exitedAfterDisconnect.
2020-04-17T14:17:01: PM2 error: Error: write ENOTSUP
at ChildProcess.target._send (internal/child_process.js:692:20)
at ChildProcess.target.send (internal/child_process.js:576:19)
at senderHelper (internal/cluster/utils.js:25:15)
at send (internal/cluster/master.js:357:10)
at handle.add (internal/cluster/master.js:329:5)
at SharedHandle.add (internal/cluster/shared_handle.js:29:3)
at queryServer (internal/cluster/master.js:318:10)
at Worker.onmessage (internal/cluster/master.js:250:5)
at ChildProcess.onInternalMessage (internal/cluster/utils.js:42:8)
at emitTwo (events.js:131:20)
2020-04-17T14:17:01 PM2 log: App name:CHS id:0 disconnected
Кроме того, на В конце это происходит только на одном экземпляре windows VM (на втором нет проблем вообще). Эти экземпляры идентичны в зависимости от конфигурации. Версия PM2 была 4.2.3, но затем я попробовал с 3.5.1, и я получил ту же проблему. Кто-нибудь знает, как решить эту проблему?
В последнее время выяснилось, что проблема связана с UDP, и, вероятно, некоторые неподдерживаемые функции в узле для windows, например: https://nodejs.org/api/cluster.html#cluster_event_listening