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