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

รายงานปัญหา ดูแหล่งที่มา รุ่นรายวัน · 8.0 · 7.4 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

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

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

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

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

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

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

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

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

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

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