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 เทรด แต่ละเทรดจะประมวลผลทีละรายการ ค่าเริ่มต้น 50 รายการจะประมวลผลได้สูงสุดเพียง 50 รายการพร้อมกัน และจะใช้เวลาประมาณ 4 วินาทีในการประมวลผลแต่ละรายการ (รวมถึงคำขอการจัดทำดัชนี) |
50 | ลองเพิ่ม threadPoolSize ขึ้นทีละ 10 |
สุดท้าย ลองใช้เมธอด setRequestMode()
เพื่อเปลี่ยนโหมดคำขอ API (ASYNCHRONOUS
หรือ SYNCHRONOUS
)
ดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ของไฟล์การกำหนดค่าได้ที่พารามิเตอร์การกำหนดค่าที่ Google มีให้
อัตราการส่งข้อมูลการจัดทำดัชนีต่ำสำหรับ ListTraversalConnector
โดยค่าเริ่มต้น เครื่องมือเชื่อมต่อที่ใช้ ListTraversalConnnector จะใช้ตัวข้ามผ่านตัวเดียวเพื่อจัดทำดัชนีรายการของคุณ หากต้องการเพิ่มอัตราการส่งข้อมูลการจัดทำดัชนี คุณสร้างตัวข้ามผ่านหลายตัวโดยมีการกำหนดค่าของตัวเองโดยเน้นที่สถานะรายการที่เฉพาะเจาะจง (NEW_ITEM
, MODIFIED
และอื่นๆ) ได้ ตารางต่อไปนี้แสดงการตั้งค่าการกำหนดค่าเพื่อปรับปรุงอัตราการส่งข้อมูล
การเกริ่นนำ | คำอธิบาย | ค่าเริ่มต้น | เปลี่ยนการกำหนดค่าที่จะลอง |
---|---|---|---|
repository.traversers = t1, t2, t3, ... | สร้างตัวข้ามผ่านเดี่ยวๆ ตั้งแต่ 1 ตัวขึ้นไปโดยที่ t1, t2, t3, ... เป็นชื่อที่ไม่ซ้ำกันของแต่ละรายการ ตัวข้ามผ่านที่มีชื่อแต่ละรายการจะมีชุดการตั้งค่าของตนเอง ซึ่งกำหนดโดยใช้ชื่อที่ไม่ซ้ำกันของผู้ใช้ เช่น 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 ทำดัชนีเฉพาะรายการที่มีสถานะเหล่านั้น | ผู้ส่งข้ามรายหนึ่งจะตรวจสอบสถานะทั้งหมด | ทดสอบด้วยการให้การสำรวจความคิดเห็นของผู้ใช้ต่างกันสำหรับสถานะต่างๆ |
ดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ของไฟล์การกำหนดค่าได้ที่พารามิเตอร์การกำหนดค่าที่ Google มีให้
SDK หมดเวลาหรือหยุดชะงักขณะอัปโหลดไฟล์ขนาดใหญ่
หาก SDK หมดเวลาหรือหยุดชะงักขณะอัปโหลดไฟล์ขนาดใหญ่ ให้ระบุระยะหมดเวลาที่นานขึ้นโดยใช้
traverser.timeout=s
(โดยที่ s = จำนวนวินาที) ค่านี้จะระบุระยะเวลาที่เทรดของผู้ปฏิบัติงานต้องประมวลผลรายการ ระยะหมดเวลาเริ่มต้นใน SDK คือ 60 วินาทีสำหรับเทรดข้ามผ่าน นอกจากนี้ หากพบว่าคำขอ API แต่ละรายการมีระยะเวลาจำกัด ให้ใช้วิธีการต่อไปนี้เพื่อเพิ่มค่าระยะหมดเวลาของคำขอ
พารามิเตอร์การหมดเวลาของคำขอ | คำอธิบาย | ค่าเริ่มต้น |
---|---|---|
indexingService.connectTimeoutSeconds |
ระยะหมดเวลาของการเชื่อมต่อสำหรับคำขอ API การจัดทำดัชนี | 120 วินาที |
indexingService.readTimeoutSeconds |
หมดเวลาการอ่านสำหรับคำขอ API การจัดทำดัชนี | 120 วินาที |