로컬 실행을 위한 원격 캐시 적중 디버깅

문제 신고 소스 보기

이 페이지에서는 로컬 실행 컨텍스트에서 캐시 부적중을 조사하는 방법을 설명합니다.

이 페이지에서는 개발자가 로컬에서 성공적으로 빌드되고 원격 캐싱을 활용하도록 설정된 빌드 또는 테스트가 있으며, 원격 캐시가 효과적으로 활용되는지 확인하고 싶다고 가정합니다.

캐시 적중률을 확인하는 방법과 두 Bazel 호출 간의 실행 로그를 비교하는 방법에 대한 팁은 원격 실행을 위한 원격 캐시 적중 디버깅을 참조하세요. 이 가이드에 제시된 모든 내용은 로컬 실행이 포함된 원격 캐싱에도 적용됩니다. 그러나 로컬 실행에는 몇 가지 추가 문제가 있습니다.

캐시 적중률 확인

성공적인 원격 캐시 적중은 원격 실행의 캐시 적중률과 유사하게 상태 줄에 표시됩니다.

Bazel 실행의 표준 출력에 다음과 비슷한 내용이 표시됩니다.

   INFO: 7 processes: 3 remote cache hit, 4 linux-sandbox.

즉, 시도한 작업 7개 중 3개는 원격 캐시 적중을 받았고 작업 4개에는 캐시 적중이 없으며 linux-sandbox 전략을 사용하여 로컬에서 실행되었습니다. 로컬 캐시 적중은 이 요약에 포함되지 않습니다. 0개의 프로세스 (또는 예상보다 낮은 수)를 가져오면 bazel clean 다음에 빌드/테스트 명령어를 실행합니다.

캐시 적중 문제 해결

캐시 적중률이 기대에 미치지 못하는 경우 다음 단계를 따르세요.

원격 엔드포인트와의 성공적인 통신 확인

빌드가 원격 캐시와 성공적으로 통신하는지 확인하려면 이 섹션의 단계를 따르세요.

  1. 출력에서 경고 확인

    원격 실행에서는 원격 엔드포인트와의 연결에 실패하면 빌드가 실패합니다. 반면 캐시 가능한 로컬 빌드는 캐시할 수 없어도 실패하지 않습니다. Bazel 호출 출력에서 다음과 같은 경고를 확인합니다.

       WARNING: Error reading from the remote cache:
    

    또는

       WARNING: Error writing to the remote cache:
    

    이러한 경고에는 디버깅에 도움이 되는 연결 문제(예: 엔드포인트 이름 잘못 입력 또는 잘못된 사용자 인증 정보 설정)를 자세히 설명하는 오류 메시지가 표시됩니다. 이러한 오류를 찾아 해결합니다. 표시되는 오류 메시지에 충분한 정보가 제공되지 않으면 --verbose_failures를 추가해 보세요.

  2. 원격 실행의 캐시 적중 문제 해결의 단계에 따라 캐시 쓰기 Bazel 호출에서 동일한 머신 및 머신 간에 캐시 적중을 가져올 수 있는지 확인하세요.

  3. 캐시 읽기 Bazel 호출이 캐시 적중을 가져올 수 있는지 확인합니다.

    a. 캐시를 읽는 Bazel 호출에는 다른 명령줄이 설정되므로 원격 캐시와 통신하도록 설정되어 있는지 각별한 주의를 기울여야 합니다. --remote_cache 플래그가 설정되어 있고 출력에 경고가 없는지 확인합니다.

    b. 캐시 읽기 Bazel 호출이 캐시 쓰기 Bazel 호출과 동일한 대상을 빌드해야 합니다.

    c. 머신 간 캐싱을 확인할 때와 동일한 단계에 따라 캐시 쓰기 Bazel 호출에서 캐시 읽기 Bazel 호출로 캐싱을 수행합니다.