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 จัดทําดัชนีเฉพาะรายการที่มีสถานะเหล่านั้น | โปรแกรมตรวจสอบสถานะทั้งหมด 1 รายการ | ทดสอบให้มีการสุ่มตัวอย่างสถานะต่างๆ โดยใช้เครื่องมือค้นหาเส้นทางที่แตกต่างกัน |
ดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ไฟล์การกําหนดค่าได้ที่พารามิเตอร์การกําหนดค่าที่ Google มีให้
SDK หมดเวลาหรือขัดจังหวะขณะอัปโหลดไฟล์ขนาดใหญ่
หากคุณพบปัญหา SDK หมดเวลาหรือขัดจังหวะขณะอัปโหลดไฟล์ขนาดใหญ่ ให้ระบุระยะหมดเวลาที่นานขึ้นโดยใช้ traverser.timeout=s
(โดยที่ s = จำนวนวินาที) ค่านี้ระบุระยะเวลาที่ด้ายงานต้องประมวลผลรายการ ระยะหมดเวลาเริ่มต้นใน SDK คือ 60 วินาทีสำหรับชุดข้อความ Traversing นอกจากนี้ หากคุณพบว่าคําขอ API แต่ละรายการหมดเวลา ให้ใช้วิธีการต่อไปนี้เพื่อเพิ่มค่าระยะหมดเวลาของคําขอ
พารามิเตอร์ระยะหมดเวลาของคำขอ | คำอธิบาย | ค่าเริ่มต้น |
---|---|---|
indexingService.connectTimeoutSeconds |
ระยะหมดเวลาของการเชื่อมต่อสําหรับคําขอ Indexing API | 120 วินาที |
indexingService.readTimeoutSeconds |
หมดเวลาในการอ่านคําขอ Indexing API | 120 วินาที |