Скорее всего, как сказали в комментах, нехватает оперативной памяти. Проверить можно, посмотрев в /var/log/messages (или syslog) - если процессы убиваются, то мы увидим там out of memory killer.
Что делать? - если это коммерческий сайт, я бы как минимум увеличил сервер, а еще лучше - разделил Nginx и MySQL.
Для продвинутых - включать MySQL slow query log и тьюнить - по графику видно что был CPU load spike.
Я человек практический, поэтому не верю что могу изобрести велосипед, который
1) будет работать принципиально лучше чем существующие
2) станет общепринятым
Поэтому я за multi-stage build, плюс можно выделить в отдельные слои "постоянные" и "переменнные" пакеты.
Обычно есть 80% пакетов 3rd party, они постоянные, и немного своих которые меняются.
Как и для любой системы мониторинга - способность настроить ее так, чтобы можно было анализировать поведение системы и получать алерты в нужных случаях - от уровня железа до бизнес-логики.
Нет никаких особых настроек.
Как сказали выше, посмотрите в error.log, на место на диске. А что показывает top - mysqld что-то делает при "зависании"? Если да, возможно индексы строит.
1) это просто алиас
2) Мы получим основанный на nginx image, плюс скопируем директорию из node image. И эта директория - это все что мы берем из node image.
Это стандартная конфигурация во многих учреждениях.
Нужно поднять локальные репо для пакетов системы и pip (https://packaging.python.org/guides/hosting-your-o...).
Вопрос только в обновлениях. Простейший способ - раз в неделю, например, обновлять вручную с флешкой.
Иногда делают автоматически, если разрешают - ставят машину с двумя интерфейсами во внутр. и внешнюю сеть. Но интерфейсы подключаются не одновременно - то один, то другой.
1) MySQL и PHP очень старые и неподдерживаемые сегодня
2) смотрите в /var/log/mysql/mysql-slow.log и оптимизируйте запросы. Скорее всего, как сказали в комментах, это не "падает", а "очень медленно отвечает"