app.yml의 Docker shm_size 옵션

app.yml에서 shm_size 파라미터를 옵션으로 설정할 수 있을까요? 오늘 vacuum analyze를 실행하던 중 이 오류에 직면했습니다:

ERROR: could not resize shared memory segment

shm 사용량을 1GB로 늘리려다 실패했는데, 기본값은 512MB이기 때문입니다. 이 파라미터는 현재 런처 스크립트에 있는 것으로 보이지만, .yml 파일에서 옵션으로(기본값은 주석 처리된 상태로) 제공되면 좋겠습니다.

--docker-args를 사용하여 기본값을 덮어쓰는 커스텀 docker 인수를 전달할 수 있습니다.

./launcher start app --docker-args "--shm-size=1024m"과 유사한 형태로 사용될 것입니다.

7개의 좋아요

불행히도 시도해 봤는데 작동하지 않았습니다. 아마도 공유 메모리 공간의 크기를 늘리기 위해 컨테이너를 다시 빌드해야 하는 것 같습니다. 런처 스크립트의 하드코딩된 부분을 수정한 후 컨테이너를 다시 빌드해야 비로소 적용되었습니다.

이 변경 사항은 업데이트나 재빌드 후에도 유지되지 않을 가능성이 높으며, 매번 수동으로 값을 변경해야 할 것입니다.

1개의 좋아요

어떤 명령을 실행하셨나요? --shm-size 옵션이 적용되려면 컨테이너를 다시 빌드해야 합니다.

2개의 좋아요

처음에는 컨테이너를 정지한 다음, 해당 매개변수를 포함하여 런처 시작 명령어를 실행했을 뿐입니다. 그런 다음 런처 스크립트 내부의 --shm-size 매개변수를 수동으로 편집하고 컨테이너를 다시 빌드했습니다. 그랬더니 값이 올바르게 조정되었습니다. 컨테이너를 다시 빌드할 때 명령줄에서 매개변수를 오버라이드하면, /admin/upgrade 인터페이스를 통해 업데이트/재빌드를 수행할 때 변경 사항이 사라지지 않을까요? 그래서 app.yml에 필드로 추가하는 것이 재빌드와 코드 업데이트를 통해 유지되는 것이 가장 좋을 것 같다고 생각했습니다.

1개의 좋아요

음, 유용할 것 같네요. @sam 이거 어떻게 생각하세요?

1개의 좋아요

하지만 컨테이너를 다시 빌드하지는 않으므로 안전합니다.

이미 다음에 따라 가지고 있지 않나요:

yaml 파일의 docker_args: .... 부분입니다.

확신은 없습니다. 옵션이 하드코딩된 곳이 3곳이 보이는데, launcher 파일 자체를 덮어쓰게 되나요?

이 문제를 수정해야 하지만, 수정 방법은 매우 복잡한 bash 스크립트입니다. 시도해 보셔도 좋습니다.

Docker 인수를 가져오는 함수가 shm-size를 처리하도록 해야 합니다. 사용자 오버라이드를 처리하고 기본값을 설정하는 것이죠.

2개의 좋아요

@Ghan 님 안녕하세요

그동안 (테스트 목적으로, 아래 주의사항 참조) 컨테이너가 빌드된 후 docker를 사용하여 직접 변경할 수 있습니다. 방법은 다음과 같습니다:

  • /var/lib/docker/containers/$CONTAINER_ID/hostconfig.json 파일을 직접 편집합니다.
  • 예를 들어, 위 파일의 ShmSize 값을 변경합니다.
  • 컨테이너를 중지하고 다시 시작합니다.

우리의 docker 컨테이너 hostconfig 파일에서는 다음과 같이 보입니다:

"ShmSize":536870912,

도움이 되셨기를 바랍니다.

주의사항: hostconfig.json을 수정하기 전에 docker 서비스가 중지되어 있는지 확인해야 한다는(그렇지 않으면 변경 사항이 덮어쓰여질 수 있음) 게시물이 몇 건 있습니다. 그러나 저는 실제로 이를 테스트해 보지 않았습니다. 당연히 launcher 솔루션이 더 좋습니다 :slight_smile:

shm_size를 늘리는 현재 해결책이 무엇인지 아시는 분 계신가요?

수정: 여전히 하드코딩되어 있는 것 같습니다.

관련 스레드: