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

문제 신고 소스 보기

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

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

캐시 적중률을 확인하는 방법과 두 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 호출로 캐싱을 하려면 머신 간 캐싱을 확인하는 것과 동일한 단계를 따르세요.