
У меня ограниченные ресурсы на сервере, и я хочу разместить 50 различных версий своего продукта. У меня очень сложный и, к сожалению, глючный продукт, и я хотел бы сохранить доступность каждой версии. Если будет сообщено о какой-либо ошибке, мы сможем провести расследование и выяснить, когда именно эта проблема впервые возникла.
Но поскольку каждый веб-сайт имеет 5 ГБ данных и 1 ГБ базы данных, невозможно держать все веб-сайты открытыми все время. Наш сервер выдает ошибки mysql и сервер не отвечает из-за переполнения памяти.
Мне было интересно, есть ли способ оставить эти 50 разных веб-сайтов отключенными по умолчанию. Если кто-то попытается добраться до версии-5-1.ourdomain.com, покажите экран ожидания и перенаправление, когда он загрузится.
А если веб-сайт не посещался более 30 минут, закройте его и освободите ресурсы.
решение1
Возможно, есть лучший способ, но вы должны иметь возможность использовать обратный прокси на хосте в сочетании с активацией сокета systemd. Когда запрос поступает в сокет, systemd может запустить контейнер и переслать запрос (он будет заблокирован до тех пор, пока контейнер не запустится и не получит запрос), затем что-то будет следить за файлами журнала, и когда в журнале доступа ничего не появляется, например, в течение 5 минут, просто остановите контейнер.
решение2
У меня была та же проблема (хотелось запустить веб-сервер по требованию... не имея 50(!) разных копий, работающих на одном хосте). Существующий ответ дает совершенно правильное решение, но для его настройки нужно еще немного поработать, и мне также хотелось чего-то, что можно было бы легко развернуть в среде контейнеров, которая не очень хорошо работает с systemd.
Для этой цели я создал следующий проект, который сейчас запускаю в производство:https://github.com/radian-software/sleeping-beauty
Он не идеален, но может подойти для вашего случая использования или может быть адаптирован под ваши нужды.