Tôi đang đánh giá điểm chuẩn cho Tìm kiếm có mục tiêu thông lượng rất cao.ElasticSearch - thông lượng chỉ mục cao
Mục tiêu hiện tại của tôi là có thể lập chỉ mục 3 tỷ (3.000.000.000) tài liệu chỉ trong vài giờ. Vì mục đích đó, tôi hiện có 3 máy chủ cửa sổ, với bộ nhớ RAM 16 GB và 8 bộ xử lý mỗi máy. Các tài liệu được chèn vào có một ánh xạ rất đơn giản, chỉ chứa một số ít trường số không phân tích (_all
bị tắt).
Tôi có thể đạt được khoảng 120.000 yêu cầu chỉ mục mỗi giây (giám sát sử dụng bàn lớn), sử dụng giàn khoan tương đối khiêm tốn này và tôi tin rằng thông lượng có thể được tăng thêm. Tôi đang sử dụng một số máy khách NEST .net để gửi các yêu cầu hàng loạt chỉ mục, với số lượng lớn chỉ mục 1500 hoạt động.
Thật không may, thông lượng của yêu cầu 120k mỗi giây không kéo dài quá lâu và tốc độ giảm dần, giảm xuống ~ 15k sau một vài giờ.
Giám sát các máy cho thấy rằng cpu không phải là nút cổ chai. Tuy nhiên, thời gian không hoạt động của ổ đĩa vật lý (không phải SSD) dường như đang giảm trên tất cả các máy, đạt mức độ không đáng tin cậy ít hơn 15%.
Đặt refresh_interval
đến 60s, so với 300 giây và cuối cùng 15m, dường như không giúp được gì nhiều. Theo dõi một lần chuyển đổi đơn lẻ trong một phân đoạn duy nhất, cho thấy translog bị xóa mỗi 30 phút, trước khi đạt 200MB.
Tôi đã cố gắng sử dụng hai chiến lược sharding:
- 1 chỉ số, với 60 mảnh (không bản sao).
- 3 chỉ mục, với 20 phân đoạn mỗi (không có bản sao).
Cả hai lần thử đều mang lại trải nghiệm tương tự, điều tôi đoán là có cùng số lượng phân đoạn.
Nhìn vào các phân đoạn, tôi có thể thấy rằng hầu hết các phân đoạn đều có ~ 30 đoạn được cam kết và số lượng phân đoạn có thể tìm kiếm tương tự. Kích thước phân đoạn khác nhau. Tại một thời điểm, một nỗ lực để tối ưu hóa chỉ mục với max_num_segments = 1, dường như đã giúp một chút sau khi nó được hoàn thành (mất một thời gian dài).
Bất kỳ lúc nào, bắt đầu toàn bộ quy trình nhập ngay từ đầu, sau khi xóa chỉ mục đã sử dụng và tạo chỉ mục mới - dẫn đến hành vi tương tự. Ban đầu chỉ số thông lượng cao, nhưng dần dần giảm dần, lâu trước khi đạt mục tiêu 3 tỷ tài liệu. Kích thước chỉ mục trong khoảng thời gian đó là khoảng 120GB.
Tôi đang sử dụng phiên bản ElasticSearch 1.4. Xms và Xmx được cấu hình cho 8192MB, 50% bộ nhớ có sẵn. Bộ đệm lập chỉ mục được đặt thành 30%.
Câu hỏi của tôi là như sau:
- Giả sử rằng các đĩa hiện là nút cổ chai của giàn khoan này, là hiện tượng này sử dụng đĩa tăng dần là một bình thường không? Nếu không, những gì có thể được thực hiện để phủ nhận những hiệu ứng này?
- Có điều chỉnh tinh vi nào mà tôi có thể thực hiện để tăng thông lượng lập chỉ mục không? Tôi có nên không? hoặc tôi chỉ nên mở rộng quy mô.
bộ nhớ dấu chân quá trình theo thời gian là gì? thông lượng ổn định ở mức 15k/s hay nó tiếp tục giảm? những gì đang đi đến/từ đĩa? (Trên Linux, một số này có sẵn với ps hoặc top, một số có strace) – Andras
Tôi không nhớ bộ nhớ chính xác, sẽ cập nhật vào ngày mai. Tuy nhiên, tôi nhớ một đồ thị ghép hình khá khỏe mạnh. Tỷ lệ lập chỉ mục dường như ổn định ở mức 15k/s, tuy nhiên sẽ mất nhiều giờ để xác minh điều đó. Trên mỗi máy, dịch vụ elasticsearch thực hiện khoảng 2MG/s viết (ban đầu - ít hơn nhiều khi tốc độ mất dần), và khi đĩa bận, 50 - 80 MG/s đọc. – Roman
Bạn có chỉ định khóa cho tài liệu hoặc bạn có cho phép Elasticsearch tự động tạo ID không? Bạn đã thử sử dụng ít mảnh hơn chưa? –