การแก้ไขข้อบกพร่องของ Hit แคชระยะไกลสำหรับการดำเนินการในเครื่อง

หน้านี้จะอธิบายวิธีตรวจสอบการพลาดแคชในบริบทของการดำเนินการในเครื่อง

หน้านี้จะถือว่าคุณมีบิลด์และ/หรือการทดสอบที่สร้างขึ้นในเครื่องได้สำเร็จและตั้งค่าให้ใช้การแคชระยะไกล และคุณต้องการตรวจสอบว่ามีการใช้แคชระยะไกลอย่างมีประสิทธิภาพ

ดูเคล็ดลับเกี่ยวกับวิธีตรวจสอบอัตราการพบแคชและวิธีเปรียบเทียบบันทึกการดำเนินการระหว่างการเรียกใช้ Bazel 2 ครั้งได้ที่ การแก้ไขข้อบกพร่องของการพบแคชระยะไกลสำหรับการดำเนินการระยะไกล ทุกสิ่งที่แสดงในคู่มือดังกล่าวใช้กับการแคชระยะไกลด้วยการดำเนินการในเครื่องด้วย อย่างไรก็ตาม การดำเนินการในเครื่องจะมีความท้าทายเพิ่มเติมบางอย่าง

การตรวจสอบอัตราการพบแคช

การเข้าถึงแคชระยะไกลที่สำเร็จจะแสดงในบรรทัดสถานะ ซึ่งคล้ายกับ อัตราการเข้าถึงแคชกับการดำเนินการระยะไกล

ในเอาต์พุตมาตรฐานของการเรียกใช้ 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 ที่อ่านแคชเข้าถึงแคชได้

    ก. เนื่องจากการเรียกใช้ Bazel ที่อ่านแคชจะมีการตั้งค่าบรรทัดคำสั่งที่แตกต่างกัน โปรดระมัดระวังเป็นพิเศษเพื่อให้แน่ใจว่ามีการตั้งค่าอย่างถูกต้องเพื่อ สื่อสารกับแคชระยะไกล ตรวจสอบว่าได้ตั้งค่าแฟล็ก --remote_cache แล้ว และไม่มีคำเตือนในเอาต์พุต

    ข. ตรวจสอบว่าการเรียกใช้ Bazel ที่อ่านแคชสร้างเป้าหมายเดียวกันกับการเรียกใช้ Bazel ที่เขียนแคช

    ค. ทำตามขั้นตอนเดียวกันกับที่ใช้เพื่อให้แน่ใจว่ามีการแคชข้ามเครื่อง เพื่อให้แน่ใจว่ามีการแคชจากการเรียกใช้ Bazel ที่เขียนแคชไปยังการเรียกใช้ Bazel ที่อ่านแคช