내 앱 인스턴스가 예상대로 축소되지 않는 이유는 무엇입니까?
애플리케이션에 대한 트래픽이 느려져서 앱이 축소되기 시작하면 인스턴스가 사라지지 않습니다.
수신 워크로드가 애플리케이션에 대해 느려지면 Code Engine 가 구성된 스케일링 값을 기반으로 애플리케이션을 자동으로 스케일링 다운하기 시작합니다. Code Engine 는 SIGTERM 메시지를 애플리케이션으로 전송합니다. 코드는 이 신호에 반응하고 종료해야 합니다. 코드가 SIGTERM 메시지를 처리하지 않는 경우, 애플리케이션 인스턴스는 구성된 요청 제한시간 값 (기본값: 300초) 동안 Terminating 상태로 유지됩니다.
다음 솔루션 중 하나를 시도하십시오.
-
스케일링이 작동하는 방법에 대한 문서를 검토하십시오. 애플리케이션 스케일링 구성을 참조하십시오.
-
애플리케이션에 대한 자동 스케일링을 위해 구성된 값을 검토하십시오.
- 콘솔에서 애플리케이션의 페이지로 이동하십시오. 자동 스케일링 기능 설정은 구성 > 런타임 탭에 있습니다.
- CLI를 사용하여
ibmcloud ce app get명령을 실행하여 앱의 세부사항을 표시하십시오.
-
코드가 SIGTERM 메시지를 처리하는지 확인하십시오. 애플리케이션이 완전히 축소되려면 애플리케이션 코드가 SIGTERM 신호를 처리해야 합니다. Code Engine 가 자동으로 스케일링 다운되면 SIGTERM 신호가 애플리케이션으로 전송됩니다.
다음 코드 예제는 SIGTERM 메시지를 처리합니다. 이는 앱이 인스턴스가 종료된다는 신호를 수신한 후 앱에서 시작한 HTTP 서버에 대한 연결을 닫기 때문입니다.
const server = // start the HTTP server process.on('SIGTERM', () => { console.info('SIGTERM signal received.'); server.close(() => { console.log('Http server closed.'); }); }); -
앱의 문제점을 해결하는 데 도움이 되도록 앱 인스턴스의 세부사항을 검토하십시오. 앱 인스턴스에 대한 세부사항 가져오기 를 참조하십시오.