SDK Google Cloud Search chứa một số tham số cấu hình do Google cung cấp mà tất cả trình kết nối đều sử dụng. Việc biết cách điều chỉnh các chế độ cài đặt này có thể giúp đơn giản hoá đáng kể việc lập chỉ mục dữ liệu. Hướng dẫn này liệt kê một số vấn đề có thể xuất hiện trong quá trình lập chỉ mục và các chế độ cài đặt dùng để giải quyết các vấn đề đó.
Thông lượng lập chỉ mục thấp đối với FullTraversalConnector
Bảng sau đây liệt kê các chế độ cài đặt cấu hình để cải thiện thông lượng cho FullTraversalConnector:
Xem xét | Mô tả | Mặc định | Thay đổi cấu hình cần thử |
---|---|---|---|
traverse.partitionSize |
Số lượng ApiOperation() cần xử lý theo lô trước khi tìm nạp thêm APIOperation() . SDK chờ xử lý phân vùng hiện tại trước khi tìm nạp các mục bổ sung. Chế độ cài đặt này phụ thuộc vào dung lượng bộ nhớ có sẵn. Kích thước phân vùng nhỏ hơn, chẳng hạn như 50 hoặc 100, cần ít bộ nhớ hơn nhưng sẽ khiến SDK phải chờ lâu hơn. |
50 | Nếu bạn có nhiều bộ nhớ, hãy thử tăng partitionSize lên 1000 trở lên. |
batch.batchSize |
Số lượng yêu cầu được gộp lại với nhau. Khi quá trình phân vùng kết thúc, SDK sẽ đợi tất cả các yêu cầu theo lô được xử lý từ phân vùng. Các lô lớn hơn sẽ cần chờ lâu hơn. | 10 | Hãy thử giảm kích thước lô. |
batch.maxActiveBatches |
Số lượng lô được phép thực thi đồng thời. | 20 | Nếu giảm batchSize , bạn nên tăng maxActiveBatches theo công thức sau: maxActiveBatches = (partitionSize / batchSize ) + 50. Ví dụ: nếu partititionSize là 1000 và batchSize là 5, thì maxActiveBatches phải là 250. 50 yêu cầu bổ sung là vùng đệm cho các yêu cầu thử lại. Việc tăng này cho phép trình kết nối xử lý hàng loạt tất cả các yêu cầu mà không bị chặn. |
traverse.threadPoolSize |
Số lượng luồng mà trình kết nối tạo ra để cho phép xử lý song song. Một trình lặp đơn sẽ tìm nạp các thao tác (thường là đối tượng RepositoryDoc ) theo tuần tự, nhưng lệnh gọi API sẽ xử lý song song bằng cách sử dụng số lượng luồng threadPoolSize . Mỗi luồng xử lý một mục tại một thời điểm. Giá trị mặc định là 50 sẽ chỉ xử lý tối đa 50 mục cùng một lúc và mất khoảng 4 giây để xử lý một mục riêng lẻ (bao gồm cả yêu cầu lập chỉ mục). |
50 | Hãy thử tăng threadPoolSize theo bội số của 10. |
Cuối cùng, hãy cân nhắc sử dụng phương thức setRequestMode()
để thay đổi chế độ yêu cầu API (ASYNCHRONOUS
hoặc SYNCHRONOUS
).
Để biết thêm thông tin về các thông số tệp cấu hình, hãy tham khảo bài viết Thông số cấu hình do Google cung cấp.
Thông lượng lập chỉ mục thấp đối với ListTraversalConnector
Theo mặc định, một trình kết nối triển khai ListTraversalConnnector sử dụng một trình truy cập duy nhất để lập chỉ mục các mục của bạn. Để tăng tốc độ lập chỉ mục, bạn có thể tạo nhiều trình duyệt, mỗi trình duyệt có cấu hình riêng tập trung vào các trạng thái mục cụ thể (NEW_ITEM
, MODIFIED
, v.v.). Bảng sau đây liệt kê các chế độ cài đặt cấu hình để cải thiện thông lượng:
Xem xét | Mô tả | Mặc định | Thay đổi cấu hình cần thử |
---|---|---|---|
repository.traversers = t1, t2, t3, ... | Tạo một hoặc nhiều trình truy cập riêng lẻ, trong đó t1, t2, t3, ... là tên riêng của từng trình truy cập. Mỗi trình truy cập được đặt tên đều có một bộ chế độ cài đặt riêng được xác định bằng tên riêng của trình truy cập, chẳng hạn như traversers.t1.hostload và traversers.t2.hostload | Một trình truy cập | Sử dụng chế độ cài đặt này để thêm các trình chuyển đổi khác |
traversers.t1.hostload = n | Xác định số lượng luồng, n, để sử dụng nhằm đồng thời lập chỉ mục các mục. | 5 | Thử nghiệm việc điều chỉnh n dựa trên lượng tải bạn muốn đặt trên kho lưu trữ. Bắt đầu với các giá trị từ 10 trở lên. |
schedule.pollQueueIntervalSecs = s | Xác định số giây, s, để chờ trước khi thăm dò ý kiến lại . Trình kết nối nội dung sẽ tiếp tục thăm dò ý kiến về các mục miễn là API trả về các mục trong phản hồi thăm dò ý kiến. Khi phản hồi thăm dò ý kiến trống, trình kết nối sẽ đợi s giây trước khi thử lại. Chế độ cài đặt này chỉ được ListingConnector sử dụng | 10 | Hãy thử giảm xuống còn 1. |
traverser.t1.pollRequest.statuses = status1, status2, … | Chỉ định trạng thái, status1, status2, …, của các mục cần lập chỉ mục. Ví dụ: việc đặt status1 thành NEW_ITEM và status2 thành MODIFIED sẽ hướng dẫn trình truy cập t1 chỉ lập chỉ mục các mục có trạng thái đó. | Một trình truy cập kiểm tra tất cả trạng thái | Thử nghiệm với việc có nhiều trình thăm dò khác nhau cho các trạng thái khác nhau. |
Để biết thêm thông tin về các thông số tệp cấu hình, hãy tham khảo bài viết Thông số cấu hình do Google cung cấp.
SDK hết thời gian chờ hoặc bị gián đoạn khi tải tệp lớn lên
Nếu bạn gặp phải thời gian chờ SDK hoặc bị gián đoạn trong khi tải tệp lớn lên, hãy chỉ định thời gian chờ lớn hơn bằng cách sử dụng traverser.timeout=s
(trong đó s = số giây). Giá trị này xác định thời lượng luồng worker phải xử lý một mục. Thời gian chờ mặc định trong SDK là 60 giây đối với luồng trình truy cập. Ngoài ra, nếu bạn gặp phải trường hợp hết thời gian chờ cho từng yêu cầu API, hãy sử dụng các phương thức sau để tăng giá trị thời gian chờ yêu cầu:
Tham số thời gian chờ yêu cầu | Mô tả | Mặc định |
---|---|---|
indexingService.connectTimeoutSeconds |
Hết thời gian kết nối cho các yêu cầu API lập chỉ mục. | 120 giây. |
indexingService.readTimeoutSeconds |
Hết thời gian chờ đọc cho các yêu cầu API lập chỉ mục. | 120 giây. |