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

รายงานปัญหา ดูแหล่งที่มา /3} /4} {3/4} {3/4} {3/4} {3/4} /4.

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

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

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

การตรวจสอบอัตรา Hit ของแคช

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

ในเอาต์พุตมาตรฐานของการเรียกใช้ Bazel คุณจะเห็นข้อมูลต่อไปนี้

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

ซึ่งหมายความว่า จากการพยายามดำเนินการ 7 ครั้ง โดย 3 รายการได้รับ Hit แคชระยะไกล และการดำเนินการ 4 รายการไม่มี Hit จากแคชและได้ดำเนินการในเครื่องโดยใช้กลยุทธ์ linux-sandbox Hit แคชในเครื่องจะไม่รวมอยู่ในสรุปนี้ หากคุณได้รับ 0 กระบวนการ (หรือตัวเลขต่ำกว่าที่คาดไว้) ให้เรียกใช้ bazel clean ตามด้วยคำสั่งบิลด์/ทดสอบ

การแก้ปัญหาการพบแคช

หากคุณไม่ได้รับอัตรา Hit ของแคชตามที่คาดไว้ ให้ทำดังนี้

มั่นใจได้ว่าจะสื่อสารกับปลายทางระยะไกลได้สำเร็จ

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

  1. ตรวจสอบเอาต์พุตเพื่อหาคำเตือน

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

       WARNING: Error reading from the remote cache:
    

    หรือ

       WARNING: Error writing to the remote cache:
    

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

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

  3. ตรวจสอบว่าการเรียกใช้ Bazel ที่มีการอ่านแคชอาจได้รับ Hit จากแคช

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

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

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