Điều chỉnh các tùy chọn cài đặt trình kết nối

SDK Google Cloud Search chứa một số thông số cấu hình do Google cung cấp mà tất cả cá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ể quá trình lập chỉ mục dữ liệu. Hướng dẫn này liệt kê một số vấn đề có thể xảy ra trong quá trình lập chỉ mục và các chế độ cài đặt được dùng để giải quyết những 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:

Cài đặt Mô tả Mặc định Thay đổi cấu hình để thử
traverse.partitionSize Số lượng ApiOperation() cần xử lý theo lô trước khi tìm nạp thêm APIOperation(). SDK sẽ đợi phân vùng hiện tại được xử lý trước khi tìm nạp các mục bổ sung. Chế độ cài đặt này phụ thuộc vào 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, sẽ cần ít bộ nhớ hơn nhưng SDK sẽ 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 hoặc hơn.
batch.batchSize Số lượng yêu cầu được gộp lại với nhau. Khi kết thúc việc phân vùng, 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 thời gian 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à 1.000 và batchSize là 5, thì maxActiveBatches phải là 250. 50 yêu cầu bổ sung là khoảng đệm cho các yêu cầu thử lại. Việc tăng số lượ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 duy nhất sẽ tìm nạp các thao tác (thường là các đối tượng RepositoryDoc) theo tuần tự, nhưng các 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, tức là chỉ xử lý tối đa 50 mục cùng lúc và mất khoảng 4 giây để xử lý từng mục (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ố trong tệp cấu hình, hãy tham khảo bài viết Các 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, trình kết nối triển khai ListTraversalConnnector sẽ sử dụng một trình duyệt duy nhất để lập chỉ mục các mục của bạn. Để tăng thông lượng 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:

.
Cài đặtMô tảMặc địnhThay đổi cấu hình để thử
repository.traversers = t1, t2, t3, ...Tạo một hoặc nhiều trình duyệt riêng lẻ, trong đó t1, t2, t3, ... là tên riêng biệt của từng trình duyệt. Mỗi trình duyệt đượ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 duyệt, chẳng hạn như traversers.t1.hostloadtraversers.t2.hostloadMột trình duyệtSử dụng chế độ cài đặt này để thêm các trình duyệt bổ sung
traversers.t1.hostload = nXác định số lượng luồng, n, cần dùng để lập chỉ mục các mục cùng một lúc.5Thử nghiệm với việc điều chỉnh n dựa trên mức tải mà bạn muốn đặt trên kho lưu trữ. Bắt đầu bằng các giá trị từ 10 trở lên.
schedule.pollQueueIntervalSecs = sXác định số giây, s, cần chờ trước khi thăm dò lại . Trình kết nối nội dung sẽ tiếp tục thăm dò các mục miễn là API trả về các mục trong phản hồi thăm dò. Khi phản hồi thăm dò trống, trình kết nối sẽ đợi s giây rồi thử lại. Chế độ cài đặt này chỉ được ListingConnector sử dụng10Hãy thử giảm xuống 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_ITEMstatus2 thành MODIFIED sẽ hướng dẫn trình duyệt t1 chỉ lập chỉ mục các mục có trạng thái đó.Một trình duyệt kiểm tra tất cả trạng tháiThử nghiệm với việc có nhiều trình duyệt thăm dò ý kiến về nhiều trạng thái.

Để biết thêm thông tin về các thông số trong tệp cấu hình, hãy tham khảo bài viết Các 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 trong khi tải tệp lớn lên

Nếu bạn gặp phải tình trạng hết thời gian chờ hoặc bị gián đoạn SDK trong khi tải tệp lớn lên, hãy chỉ định thời gian chờ dài 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 gian mà các 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 các luồng của trình duyệt. Ngoài ra, nếu bạn gặp phải tình trạng hết thời gian chờ cho các yêu cầu API riêng lẻ, hãy sử dụng các phương thức sau để tăng giá trị thời gian chờ của yêu cầu:

Tham số hết thời gian yêu cầu Mô tả Mặc định
indexingService.connectTimeoutSeconds Thời gian chờ kết nối cho các yêu cầu API lập chỉ mục. 120 giây.
indexingService.readTimeoutSeconds Thời gian chờ đọc cho các yêu cầu API lập chỉ mục. 120 giây.