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