การแก้ไขข้อบกพร่องของ 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 ที่อ่านแคช