
내 서버의 리소스가 제한되어 있고 내 제품의 50가지 버전을 호스팅하고 싶습니다. 저는 매우 복잡하고 불행하게도 버그가 있는 제품을 가지고 있으며 모든 버전에 계속 액세스할 수 있도록 하고 싶습니다. 버그가 보고된 경우 조사를 통해 이 문제가 처음 발생한 정확한 시점을 알려드릴 수 있습니다.
그러나 각 웹사이트에는 5GB의 데이터와 1GB의 데이터베이스가 있으므로 모든 웹사이트를 항상 열어두는 것은 불가능합니다. 우리 서버에서 mysql 오류가 발생하고 메모리 오버플로로 인해 서버가 응답하지 않습니다.
50개의 서로 다른 웹 사이트를 기본적으로 비활성화할 수 있는 방법이 있는지 궁금합니다. 누군가 version-5-1.ourdomain.com에 접속하려고 하면 대기 화면이 표시되고 부팅 시 리디렉션됩니다.
그리고 웹사이트가 30분 이상 방문하지 않으면 해당 웹사이트를 닫고 리소스를 해제하세요.
답변1
더 좋은 방법이 있을 수 있지만 시스템 소켓 활성화와 결합된 호스트에서 역방향 프록시를 사용할 수 있어야 합니다. 요청이 소켓에 들어오면 systemd는 컨테이너를 시작하고 요청을 전달할 수 있습니다(컨테이너가 시작되고 요청을 받을 때까지 차단됩니다). 그런 다음 로그 파일을 감시하고 액세스에 아무것도 표시되지 않을 때 예를 들어 5분 동안 기록하면 컨테이너를 중지할 수 있습니다.
답변2
나는 동일한 문제를 겪었습니다(요청 시 웹 서버를 시작하고 싶었습니다... 동일한 호스트에서 50(!)개의 다른 복사본이 실행되지 않았습니다). 기존 답변은 완벽하게 올바른 솔루션을 제공하지만 설정해야 할 일부 발품 작업이 남아 있으며 systemd에서는 잘 작동하지 않는 컨테이너 네이티브 환경에 쉽게 배포할 수 있는 것을 원했습니다.
이를 위해 현재 프로덕션 환경에서 실행 중인 다음 프로젝트를 만들었습니다.https://github.com/radian-software/sleeping-beauty
완벽하지는 않지만 사용 사례에 적합하거나 적합하게 조정할 수 있습니다.