Cải thiện khả năng phục hồi với áp suất ngược và kiểm soát đầu vào cho Amazon OpenSearch Service | Dịch vụ web của Amazon

Cải thiện khả năng phục hồi với áp suất ngược và kiểm soát đầu vào cho Amazon OpenSearch Service | Dịch vụ web của Amazon

Nút nguồn: 2723961

Dịch vụ Tìm kiếm Mở của Amazon là một dịch vụ được quản lý giúp việc bảo mật, triển khai và vận hành các cụm OpenSearch trên quy mô lớn trong Đám mây AWS trở nên đơn giản. Năm ngoái, chúng tôi đã giới thiệu Shard lập chỉ mục áp lực ngượckiểm soát nhập học, theo dõi tài nguyên cụm và lưu lượng truy cập đến để từ chối có chọn lọc các yêu cầu nếu không sẽ gây ra rủi ro về độ ổn định như hết bộ nhớ và ảnh hưởng đến hiệu suất của cụm do tranh chấp bộ nhớ, độ bão hòa CPU và chi phí GC, v.v.

Giờ đây, chúng tôi rất vui mừng được giới thiệu Kiểm soát truy cập dựa trên CPU và áp suất ngược của Tìm kiếm đối với Dịch vụ Tìm kiếm Mở, giúp tăng cường hơn nữa khả năng phục hồi của các cụm. Những cải tiến này có sẵn cho tất cả các phiên bản OpenSearch 1.3 trở lên.

Tìm kiếm áp suất ngược

Áp suất ngược ngăn không cho hệ thống bị quá tải với công việc. Nó làm như vậy bằng cách kiểm soát tốc độ lưu lượng hoặc giảm tải quá mức để ngăn ngừa sự cố và mất dữ liệu, cải thiện hiệu suất và tránh sự cố hoàn toàn của hệ thống.

Tìm kiếm ngược áp lực là một cơ chế để xác định và hủy bỏ các yêu cầu tìm kiếm sử dụng nhiều tài nguyên trong chuyến bay khi một nút đang bị cưỡng bức. Tính năng này hiệu quả đối với khối lượng công việc tìm kiếm có mức sử dụng tài nguyên cao bất thường (chẳng hạn như truy vấn phức tạp, truy vấn chậm, nhiều lần truy cập hoặc tập hợp nặng), điều này có thể gây ra sự cố nút và ảnh hưởng đến tình trạng của cụm.

Search Backpressure được xây dựng dựa trên khung theo dõi tài nguyên tác vụ, khung này cung cấp API dễ sử dụng để theo dõi việc sử dụng tài nguyên của từng tác vụ. Search Backpressure sử dụng một luồng nền đo lường định kỳ mức sử dụng tài nguyên của nút và chỉ định điểm hủy cho từng tác vụ tìm kiếm trong chuyến bay dựa trên các yếu tố như thời gian CPU, phân bổ heap và thời gian đã trôi qua. Điểm hủy cao hơn tương ứng với yêu cầu tìm kiếm nhiều tài nguyên hơn. Các yêu cầu tìm kiếm bị hủy theo thứ tự điểm số hủy giảm dần để khôi phục các nút nhanh chóng, nhưng số lần hủy bị giới hạn tỷ lệ để tránh lãng phí công việc.

Sơ đồ sau đây minh họa quy trình làm việc Tìm kiếm Áp suất Ngược.

Yêu cầu tìm kiếm trả lại mã trạng thái HTTP 429 “Quá nhiều yêu cầu” khi hủy. OpenSearch trả về một phần kết quả nếu chỉ một số phân đoạn không thành công và cho phép một phần kết quả. Xem đoạn mã sau:

{ "error": { "root_cause": [ { "type": "task_cancelled_exception", "reason": "cancelled task with reason: heap usage exceeded [403mb >= 77.6mb], elapsed time exceeded [1.7m >= 45s]" } ], "type": "search_phase_execution_exception", "reason": "SearchTask was cancelled", "phase": "fetch", "grouped": true, "failed_shards": [ { "shard": 0, "index": "nyc_taxis", "node": "9gB3PDp6Speu61KvOheDXA", "reason": { "type": "task_cancelled_exception", "reason": "cancelled task with reason: heap usage exceeded [403mb >= 77.6mb], elapsed time exceeded [1.7m >= 45s]" } } ], "caused_by": { "type": "task_cancelled_exception", "reason": "cancelled task with reason: heap usage exceeded [403mb >= 77.6mb], elapsed time exceeded [1.7m >= 45s]" } }, "status": 429
}

Theo dõi tìm kiếm áp lực ngược

Bạn có thể theo dõi trạng thái Áp suất ngược tìm kiếm chi tiết bằng cách sử dụng API thống kê nút:

curl -X GET "https://{endpoint}/_nodes/stats/search_backpressure"

Bạn cũng có thể xem bản tóm tắt các lần hủy trên toàn cụm bằng cách sử dụng amazoncloudwatch. Các số liệu sau đây hiện có sẵn trong ES / OpenSearchService không gian tên:

  • Tìm kiếmNhiệm vụĐã hủy – Số lần hủy bỏ nút điều phối viên
  • Tìm kiếmShardTaskĐã hủy – Số lần hủy bỏ nút dữ liệu

Ảnh chụp màn hình sau đây cho thấy một ví dụ về theo dõi các chỉ số này trên bảng điều khiển CloudWatch.

Kiểm soát nhập học dựa trên CPU

Kiểm soát nhập học là một cơ chế gác cổng chủ động giới hạn số lượng yêu cầu đối với một nút dựa trên dung lượng hiện tại của nó, cả đối với sự gia tăng tự nhiên và lưu lượng truy cập đột biến.

Ngoài các ngưỡng kích thước yêu cầu và áp suất bộ nhớ JVM, giờ đây nó cũng giám sát mức sử dụng CPU trung bình luân phiên của mỗi nút để từ chối thư đến. _search_bulk yêu cầu. Nó ngăn các nút bị quá tải với quá nhiều yêu cầu dẫn đến các điểm nóng, các vấn đề về hiệu suất, thời gian chờ yêu cầu và các lỗi xếp tầng khác. Các yêu cầu quá mức trả về mã trạng thái HTTP 429 “Quá nhiều yêu cầu” khi bị từ chối.

Xử lý lỗi HTTP 429

Bạn sẽ nhận được lỗi HTTP 429 nếu bạn gửi quá nhiều lưu lượng truy cập đến một nút. Nó cho biết không đủ tài nguyên cụm, yêu cầu tìm kiếm sử dụng nhiều tài nguyên hoặc khối lượng công việc tăng đột biến ngoài ý muốn.

Search Backpressure cung cấp lý do từ chối, điều này có thể giúp tinh chỉnh các yêu cầu tìm kiếm sử dụng nhiều tài nguyên. Đối với các đợt tăng đột biến về lưu lượng truy cập, chúng tôi khuyên bạn nên thử lại phía máy khách với độ lệch và độ trễ theo cấp số nhân.

Bạn cũng có thể làm theo các hướng dẫn khắc phục sự cố này để gỡ lỗi từ chối quá mức:

Kết luận

Tìm kiếm ngược áp lực là một cơ chế phản ứng để loại bỏ tải quá mức, trong khi kiểm soát nhập học là một cơ chế chủ động để giới hạn số lượng yêu cầu đến một nút vượt quá khả năng của nó. Cả hai hoạt động song song để cải thiện khả năng phục hồi tổng thể của cụm Tìm kiếm Mở.

Tìm kiếm áp lực ngược có sẵn trong Tìm kiếm mở, và chúng tôi luôn tìm kiếm đóng góp bên ngoài. Bạn có thể tham khảo các RFC để bắt đầu.


Giới thiệu về tác giả

Ketan Verma là một SDE cấp cao làm việc trên Dịch vụ tìm kiếm mở của Amazon. Anh ấy đam mê xây dựng các hệ thống phân tán quy mô lớn, cải thiện hiệu suất và đơn giản hóa các ý tưởng phức tạp bằng các khái niệm trừu tượng đơn giản. Ngoài công việc, anh ấy thích đọc sách và cải thiện kỹ năng pha chế cà phê tại nhà của mình.

chắc chắn NS là một SDE cấp cao làm việc trên Dịch vụ tìm kiếm mở của Amazon. Anh ấy đam mê giải quyết các vấn đề trong các hệ thống phân tán quy mô lớn.

Pritkumar Ladani là một SDE-2 hoạt động trên Amazon OpenSearch Service. Anh ấy thích đóng góp cho sự phát triển phần mềm nguồn mở và đam mê các hệ thống phân tán. Anh ấy là một vận động viên cầu lông nghiệp dư và thích leo núi.

Bukhtawar Khan là Kỹ sư chính làm việc trên Dịch vụ tìm kiếm mở của Amazon. Ông quan tâm đến việc xây dựng các hệ thống phân tán và tự trị. Anh ấy là người duy trì và đóng góp tích cực cho OpenSearch.

Dấu thời gian:

Thêm từ Dữ liệu lớn AWS