Режим работы сайта. Fork mode или cluster mode?

Енот
Новичо́к, через «о́»
Регистрация
17 Янв 2018
Сообщения
100
#1
Здравствуйте. В режиме работы в cluster mode есть много плюсов, такие как распределение инстансов по кол-ву доступных ядер, сниженная нагрузка на процессор (многоядерный), в следствии чего лучшая скорость работы сайта и уменьшенное время отдачи контента. (показания замерялись в keymetrix). Однако, в данный момент есть существенный недостаток в работе в этом режиме. А именно: невозможность сохранения данных и изменений в админке с первого раза. Т.е. необходимо несколько раз нажимать кнопку "сохранить" и несколько раз чистить кеш, чтобы инстансы обновились и изменения наконец, записались. В режиме работы fork mode изменения сохраняются сразу, но задействован только один поток, в результате чего нагрузка на 4-х ядерный процессор достигает 99+ процентов, сайт тупит, в keymetrix полно ошибок. Существует ли решение для работы в режиме кластера, при котором можно нормально сохранять изменения для сайта? Если возможно, хотя бы скиньте ссылки, где я могу про это почитать? Спасибо.
 
Регистрация
15 Дек 2017
Сообщения
5,067
#2
Работа системы в cluster mode была протестирована и отлично работала на тестовом сервере. Однако начали поступать жалобы на несохранения данных и функция была по умолчанию урезана до 1 инстанса. Данная проблема скорее всего зависит от версии Debian сервера и размера оперативной памяти.
Запустите сайт в 4 инстанса "instances": "4", в файле process.json.
Сделайте перезагрузку: pm2 restart all
pm2 list покажет все 4 ядра.
pm2 logs, запустите логирование и сделайте сохранение в админ-панели.
В логах должна быть показана перезагрузка 3-х ядер, 4-е ядро на котором происходило изменение, примется сразу без перезагрузки.
 
Енот
Новичо́к, через «о́»
Регистрация
17 Янв 2018
Сообщения
100
#3
Работа системы в cluster mode была протестирована и отлично работала на тестовом сервере. Однако начали поступать жалобы на несохранения данных и функция была по умолчанию урезана до 1 инстанса. Данная проблема скорее всего зависит от версии Debian сервера и размера оперативной памяти.
Запустите сайт в 4 инстанса "instances": "4", в файле process.json.
Сделайте перезагрузку: pm2 restart all
pm2 list покажет все 4 ядра.
pm2 logs, запустите логирование и сделайте сохранение в админ-панели.
В логах должна быть показана перезагрузка 3-х ядер, 4-е ядро на котором происходило изменение, примется сразу без перезагрузки.
У меня по-умолчанию и так 4 инстанса. Вернее, все доступные ядра процессора используются (в process.json instances=0). Все ядра используются и это весьма хорошо сказывается на производительности. Если б сохранения пофиксить было бы отлично. Может есть какой-нибудь временный костыль, чтобы не уменьшая кол-во инстансов сохраняться?
 
Регистрация
15 Дек 2017
Сообщения
5,067
#4
Может есть какой-нибудь временный костыль, чтобы не уменьшая кол-во инстансов сохраняться?
Нужно посмотреть, перезагрузка ядер происходит или нет?
pm2 logs, запустите логирование и сделайте сохранение в админ-панели.
В логах должна быть показана перезагрузка 3-х ядер, 4-е ядро на котором происходило изменение, примется сразу без перезагрузки.
 
Енот
Новичо́к, через «о́»
Регистрация
17 Янв 2018
Сообщения
100
#5
Нужно посмотреть, перезагрузка ядер происходит или нет?
Вот лог сразу после нажатия на кнопку "сохранить".
Код:
PM2        | Starting execution sequence in -cluster mode- for app name:mysite.com id:5
PM2        | App name:mysite.com id:5 online
PM2        | -reload- New worker listening
PM2        | Stopping app:mysite.com id:_old_5
PM2        | App name:mysite.com id:_old_5 disconnected
PM2        | App [mysite.com] with id [_old_5] and pid [9895], exited with code [0] via signal [SIGINT]
PM2        | pid=9895 msg=process killed
PM2        | Starting execution sequence in -cluster mode- for app name:mysite.com id:6
PM2        | App name:mysite.com id:6 online
PM2        | -reload- New worker listening
PM2        | Stopping app:mysite.com id:_old_6
PM2        | App name:mysite.com id:_old_6 disconnected
PM2        | App [mysite.com] with id [_old_6] and pid [9924], exited with code [0] via signal [SIGINT]
PM2        | pid=9924 msg=process killed
PM2        | Starting execution sequence in -cluster mode- for app name:mysite.com id:7
PM2        | App name:mysite.com id:7 online
PM2        | -reload- New worker listening
PM2        | Stopping app:mysite.com id:_old_7
PM2        | App name:mysite.com id:_old_7 disconnected
PM2        | App [mysite.com] with id [_old_7] and pid [8410], exited with code [0] via signal [SIGINT]
PM2        | pid=8410 msg=process killed
И еще: в логах постоянно эта ошибка, что на старом хостинге, что на новом. Ошибка была всегда. Это нормально?
Код:
/home/mysite.com/log/out-6.log last 15 lines:
6|mysite |     at emitNone (events.js:106:13)
6|mysite |     at Socket.emit (events.js:208:7)
6|mysite |     at Socket._onTimeout (net.js:407:8)
6|mysite |     at ontimeout (timers.js:475:11) code: 'ESOCKETTIMEDOUT', connect: false }
6|mysite | { Error: ESOCKETTIMEDOUT
6|mysite |     at ClientRequest.<anonymous> (/home/mysite.com/node_modules/request/request.js:813:19)
6|mysite |     at Object.onceWrapper (events.js:313:30)
6|mysite |     at emitNone (events.js:106:13)
6|mysite |     at ClientRequest.emit (events.js:208:7)
6|mysite |     at Socket.emitTimeout (_http_client.js:708:34)
6|mysite |     at Object.onceWrapper (events.js:313:30)
6|mysite |     at emitNone (events.js:106:13)
6|mysite |     at Socket.emit (events.js:208:7)
6|mysite |     at Socket._onTimeout (net.js:407:8)
6|mysite |     at ontimeout (timers.js:475:11) code: 'ESOCKETTIMEDOUT', connect: false }
 
Регистрация
15 Дек 2017
Сообщения
5,067
#6
Вот лог сразу после нажатия на кнопку "сохранить".
Все 3 ядра видно перезагружаются. Какие именно настройки не применяются? Кэш очищается?
И еще: в логах постоянно эта ошибка, что на старом хостинге, что на новом. Ошибка была всегда. Это нормально?
Это ошибка скорее всего API комментариев, там стоит лимит бесплатных запросов и сайт упирается в него.