1.26. PostgreSQL 공유 메모리 오류 문제 해결

대규모 환경이 있는 경우 검색 결과에 영향을 미치는 PostgreSQL 공유 메모리 오류와 애플리케이션의 토폴로지 보기가 발생할 수 있습니다.

1.26.1. 증상: PostgreSQL 공유 메모리 오류

search-api 로그에 다음과 같은 오류 메시지가 표시됩니다. ERROR: could not resize shared memory segment "/PostgreSQL.1083654800" to 25031264 bytes: No space left on device (SQLSTATE 53100)

1.26.2. 문제 해결: PostgreSQL 공유 메모리 오류

문제를 해결하려면 search-postgres ConfigMap에 있는 PostgreSQL 리소스를 업데이트합니다. 리소스를 업데이트하려면 다음 단계를 완료합니다.

  1. 다음 명령을 실행하여 open-cluster-management 프로젝트로 전환합니다.

    oc project open-cluster-management
  2. search-postgres Pod 메모리를 늘립니다. 다음 명령을 수행하면 메모리를 16Gi 로 늘립니다.

    oc patch search -n open-cluster-management search-v2-operator --type json -p '[{"op": "add", "path": "/spec/deployments/database/resources", "value": {"limits": {"memory": "16Gi"}, "requests": {"memory": "32Mi", "cpu": "25m"}}}]'
  3. 다음 명령을 실행하여 검색 Operator가 변경 사항을 덮어쓰지 않도록 합니다.

    oc annotate search search-v2-operator search-pause=true
  4. 다음 명령을 실행하여 search-postgres YAML 파일에서 리소스를 업데이트합니다.

    oc edit cm search-postgres -n open-cluster-management

    리소스를 늘리려면 다음 예제를 참조하십시오.

      postgresql.conf: |-
        work_mem = '128MB' # Higher values allocate more memory
        max_parallel_workers_per_gather = '0' # Disables parallel queries
        shared_buffers = '1GB' # Higher values allocate more memory

    종료하기 전에 변경 사항을 저장해야 합니다.

  5. 다음 명령을 실행하여 postgresapi pod를 다시 시작합니다.

    oc delete pod search-postgres-xyz search-api-xzy
  6. 변경 사항을 확인하려면 search-postgres YAML 파일을 열고 다음 명령을 실행하여 postgresql.conf: 에 대한 변경 사항이 있는지 확인합니다.

    oc get cm search-postgres -n open-cluster-management -o yaml

환경 변수 추가에 대한 자세한 내용은 사용자 정의 및 구성 검색을 참조하십시오.