Google Cloud Search SDK มีการกำหนดค่าหลายรายการที่ Google มีให้ พารามิเตอร์ที่เครื่องมือเชื่อมต่อทั้งหมดใช้ การรู้วิธีปรับแต่งการตั้งค่าเหล่านี้ จะเพิ่มประสิทธิภาพการจัดทำดัชนีข้อมูลได้อย่างมาก คู่มือนี้แสดงปัญหาต่างๆ ที่ อาจปรากฏขึ้นในระหว่างการจัดทำดัชนีและการตั้งค่าที่ใช้แก้ปัญหา
อัตราการส่งข้อมูลการจัดทำดัชนีต่ำสำหรับ FullTraversalConnector
ตารางต่อไปนี้แสดงการตั้งค่าการกำหนดค่าเพื่อปรับปรุงอัตราการส่งข้อมูลสำหรับ FullTraversalConnector
การตั้งค่า | คำอธิบาย | ค่าเริ่มต้น | เปลี่ยนการกำหนดค่าเพื่อลอง |
---|---|---|---|
traverse.partitionSize |
จำนวน ApiOperation() ที่จะประมวลผลเป็นกลุ่มก่อนที่จะดึงข้อมูล APIOperation() เพิ่มเติม SDK รอให้พาร์ติชันปัจจุบันประมวลผลก่อนดึงข้อมูลรายการเพิ่มเติม การตั้งค่านี้ขึ้นอยู่กับปริมาณหน่วยความจำที่มี พาร์ติชันขนาดเล็ก เช่น 50 หรือ 100 ต้องใช้หน่วยความจำน้อยกว่า แต่ต้องรอในนามของ SDK มากกว่า |
50 | หากมีหน่วยความจำจำนวนมาก ให้ลองเพิ่ม partitionSize เป็น 1, 000 เป็นอย่างน้อย |
batch.batchSize |
จำนวนคำขอที่รวมกันเป็นกลุ่ม ในตอนท้ายของการแบ่งพาร์ติชัน SDK จะรอให้คำขอแบบกลุ่มทั้งหมดประมวลผลจากพาร์ติชัน ส่วนชุดขนาดใหญ่กว่านั้นจะต้องรอนานขึ้น | 10 | ลองลดขนาดกลุ่มลง |
batch.maxActiveBatches |
จำนวนแบตช์ที่เรียกใช้พร้อมกันที่อนุญาต | 20 | หากคุณลด batchSize คุณควรชน maxActiveBatches ตามสูตรนี้ maxActiveBatches = (partitionSize / batchSize ) + 50 ตัวอย่างเช่น หาก partititionSize คือ 1, 000 และ batchSize คือ 5 maxActiveBatches ก็ควรจะเป็น 250 ส่วน 50 ที่เพิ่มเข้ามาคือบัฟเฟอร์สำหรับคำขอลองอีกครั้ง การเพิ่มขึ้นนี้จะทำให้เครื่องมือเชื่อมต่อจัดกลุ่มคำขอทั้งหมดได้โดยไม่ต้องบล็อก |
traverse.threadPoolSize |
จำนวนชุดข้อความที่เครื่องมือเชื่อมต่อสร้างเพื่อให้ประมวลผลแบบขนานได้ ตัวซ้ำตัวเดียวจะดึงข้อมูลการดำเนินการ (โดยทั่วไปคือ RepositoryDoc ออบเจ็กต์) แบบต่อเนื่อง แต่กระบวนการเรียก API พร้อมกันโดยใช้จำนวนเทรด threadPoolSize รายการ ชุดข้อความแต่ละรายการจะประมวลผล 1 รายการต่อครั้ง แต่ค่าเริ่มต้น 50 รายการจะประมวลผลพร้อมกันได้สูงสุด 50 รายการเท่านั้น และจะใช้เวลาประมาณ 4 วินาทีในการประมวลผลแต่ละรายการ (รวมถึงคำขอการจัดทำดัชนี) |
50 | ลองเพิ่ม threadPoolSize ขึ้นคูณ 10 |
สุดท้าย ให้พิจารณาใช้เมธอด setRequestMode()
เพื่อเปลี่ยนโหมดคำขอ API (ASYNCHRONOUS
หรือ SYNCHRONOUS
)
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ของไฟล์การกำหนดค่าได้ที่ พารามิเตอร์การกำหนดค่าที่ Google มีให้
อัตราการส่งข้อมูลการจัดทำดัชนีต่ำสำหรับ ListTraversalConnector
โดยค่าเริ่มต้น เครื่องมือเชื่อมต่อที่ใช้งาน ListTraversalConnnector จะใช้
Traverser ตัวเดียวเพื่อทำดัชนีรายการของคุณ หากต้องการเพิ่มอัตราการส่งข้อมูลการจัดทำดัชนี คุณสามารถ
สร้างตัวข้ามผ่านหลายตัว โดยแต่ละตัวมีค่ากำหนดของตัวเองโดยเน้นที่
สถานะสินค้า (NEW_ITEM
, MODIFIED
และอื่นๆ) ตารางต่อไปนี้แสดงรายการ
การกำหนดค่าเพื่อปรับปรุงอัตราการส่งข้อมูล:
การตั้งค่า | คำอธิบาย | ค่าเริ่มต้น | เปลี่ยนการกำหนดค่าเพื่อลอง |
---|---|---|---|
repository.traversers = t1, t2, t3, ... | สร้างตัวข้ามตำแหน่งอย่างน้อย 1 รายการโดยที่ t1, t2, t3, ... เป็นชื่อที่ไม่ซ้ำกันของแต่ละรายการ Traverser ที่มีชื่อแต่ละรายการจะมีชุดการตั้งค่าของตัวเอง ซึ่งจะระบุด้วยชื่อที่ไม่ซ้ำกันของ Traverser เช่น traversers.t1.hostload และ traversers.t2.hostload | ข้ามผ่าน 1 ตัว | ใช้การตั้งค่านี้เพื่อเพิ่มเครื่องมือข้ามผ่านเพิ่มเติม |
traversers.t1.hostload = n | ระบุจำนวนเทรด n ที่จะใช้จัดทำดัชนีรายการพร้อมกัน | 5 | ทดสอบการปรับแต่ง n ตามปริมาณโหลดที่คุณต้องการใส่ในที่เก็บ เริ่มด้วยค่า 10 ขึ้นไป |
schedule.pollQueueIntervalSecs = s | ระบุจำนวนวินาที s ที่จะรอก่อนการหยั่งสัญญาณอีกครั้ง เครื่องมือเชื่อมต่อเนื้อหาจะยังคงสำรวจรายการต่อไปตราบใดที่ API แสดงรายการในคำตอบของแบบสำรวจ เมื่อคำตอบของแบบสำรวจว่างเปล่า เครื่องมือเชื่อมต่อจะรอ s วินาทีก่อนลองอีกครั้ง การตั้งค่านี้ใช้โดย ListingConnector | 10 | ลองลดให้เหลือ 1 |
traverser.t1.pollRequest.statuses = status1, status2, … | ระบุสถานะ status1, status2, … ของรายการที่จะจัดทำดัชนี ตัวอย่างเช่น การตั้งค่า status1 เป็น NEW_ITEM และ status2 เป็น MODIFIED จะสั่งให้เครื่องมือข้ามผ่าน t1 จัดทำดัชนีเฉพาะรายการที่มีสถานะเหล่านั้น | One Traverser จะตรวจสอบทุกสถานะ | ทดลองใช้การสำรวจความคิดเห็นของนักเดินทางในสถานะต่างๆ |
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ของไฟล์การกำหนดค่าได้ที่ พารามิเตอร์การกำหนดค่าที่ Google มีให้
SDK หมดเวลาหรือถูกขัดจังหวะขณะอัปโหลดไฟล์ขนาดใหญ่
หาก SDK หมดเวลาหรือหยุดชะงักขณะอัปโหลดไฟล์ขนาดใหญ่
ระบุระยะหมดเวลาที่นานขึ้นโดยใช้
traverser.timeout=s
(โดยที่ s = จำนวนวินาที) ค่านี้จะระบุระยะเวลาที่ผู้ปฏิบัติงาน
เทรดจะต้องประมวลผลรายการ ระยะหมดเวลาเริ่มต้นใน SDK คือ 60 วินาที
สำหรับเทรดเดอร์ นอกจากนี้ ถ้าคุณพบคำขอ API แต่ละรายการ
การหมดเวลา ให้ใช้วิธีการต่อไปนี้เพื่อเพิ่มค่าระยะหมดเวลาของคำขอ
พารามิเตอร์ระยะหมดเวลาของคําขอ | คำอธิบาย | ค่าเริ่มต้น |
---|---|---|
indexingService.connectTimeoutSeconds |
ระยะหมดเวลาของการเชื่อมต่อสำหรับการจัดทำดัชนีคำขอ API | 120 วินาที |
indexingService.readTimeoutSeconds |
ระยะหมดเวลาการอ่านสำหรับคำขอ API ในการจัดทำดัชนี | 120 วินาที |