>  기사  >  백엔드 개발  >  컨테이너 진입점 프로세스의 고루틴을 덤프하는 방법은 무엇입니까?

컨테이너 진입점 프로세스의 고루틴을 덤프하는 방법은 무엇입니까?

王林
王林앞으로
2024-02-08 23:33:29857검색

如何转储容器入口点进程的 goroutine?

php editor Strawberry는 컨테이너 진입점 프로세스의 고루틴을 덤프하는 방법을 소개합니다. Go 언어를 사용하여 컨테이너화된 애플리케이션을 개발할 때 실행 중인 고루틴을 이해하고 디버그해야 하는 경우가 많습니다. 컨테이너 진입점 프로세스의 고루틴을 덤프하는 것은 일반적인 디버깅 방법으로, 애플리케이션의 문제를 분석하고 해결하는 데 도움이 될 수 있습니다. 이 기사에서는 관련 도구와 기술을 사용하여 컨테이너 진입점 프로세스의 고루틴을 덤프하고 특정 단계와 샘플 코드를 제공하는 방법을 자세히 논의합니다. 이 재미있고 실용적인 주제를 함께 살펴보겠습니다!

질문 내용

응용 프로그램이 docker-compose up 运行的应用程序。当通过 docker-compose stop에 의해 중지되었을 때 컨테이너 중 하나가 종료되지 않는 문제가 있습니다. 컨테이너는 Go로 작성된 프로세스를 실행하므로 해당 프로세스의 고루틴을 덤프하여 프로세스가 중단된 위치를 확인하고 싶습니다.

할 수 있습니다 docker ps 查看容器,然后 docker exec -it <container-id> bash 进入容器,但是一旦我 kill -QUIT <process id> 프로세스가 종료되면서 컨테이너도 중지되므로 고루틴 덤프를 가져올 수 없습니다.

이 경우 고루틴 덤프를 어떻게 얻나요?

해결 방법

컨테이너도 중지되어 고루틴 덤프를 가져올 수 없습니다.

다음을 제공하면 컨테이너 로그에서 고루틴 덤프를 얻을 수 있다고 생각합니다.

  1. docker-compose stop 컨테이너를 삭제하지 않고 실행을 중지하세요.
  2. kill -quit <process id> 고루틴을 stderr로 덤프합니다.

다음은 컨테이너 로그를 가져오는 docker 명령입니다. (-n 로그 끝부터 표시할 줄 수를 지정합니다.)

으아악

위 내용은 컨테이너 진입점 프로세스의 고루틴을 덤프하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제