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

รายงานปัญหา ดูแหล่งที่มา

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

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

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

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

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

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

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

ซึ่งหมายความว่าจากการดำเนินการที่พยายาม 7 รายการ มี 3 รายการที่ได้รับ Hit แคชระยะไกล และการดำเนินการ 4 รายการไม่มี Hit แคชและระบบได้ดำเนินการภายในเครื่องโดยใช้กลยุทธ์ linux-sandbox จำนวน Hit ของแคชในเครื่องจะไม่รวมอยู่ในสรุปนี้ หากคุณได้รับกระบวนการ 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 ที่อ่านแคชได้รับ Hit แคช

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

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

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