2014-12-08 17 views
18

Tôi đang chạy một 8 lõi, 32g RAM elasticsearch node với 5 mảnh, 400 triệu (nhỏ) tài liệu.Elasticsearch OutOfMemoryError không gian heap Java

Tất cả mọi thứ hoạt động tốt cho đến khi tôi chạy một tìm kiếm agg, sau đó mảnh bắt đầu thất bại với:

java.lang.OutOfMemoryError: Java heap space 

Tôi có changed heap size với: export ES_HEAP_SIZE=16g (còn ES_MAX_MEMES_MIN_MEM với cùng)

cũng đã thay đổi yml tệp cho elasticsearch:

bootstrap.mlockall: true 

và thậm chí (khuyến cáo của cài đặt tài liệu): dịch vụ Restart

sudo sysctl -w vm.max_map_count=262144 

và vẫn không có tác động, vẫn java.lang.OutOfMemoryError: Java heap space

Bất kỳ lời đề nghị khác? khác hơn là không chạy truy vấn cấp cao?

truy vấn là:

https://localhost:9200/my_index_name/_search?search_type=count 
{ 
    "aggs": { 
    "distinct_hostname": { 
     "cardinality": { 
     "field": "hostname" 
     } 
    } 
    } 
} 
+0

Bạn đang chạy phiên bản nào? Bạn đang chạy truy vấn tổng hợp nào? Có thể giới hạn số lượng tài liệu để đưa vào kết quả tổng hợp với bộ lọc không? –

+0

Phiên bản: 1.1.1, Xây dựng: f1585f0, JVM: 1.7.0_72 –

+0

Truy vấn tổng hợp nằm trên một trường tồn tại trong mỗi tài liệu. Truy vấn là một nỗ lực để đếm các trường hợp duy nhất của nội dung của trường này. Hạn chế những gì nó được chạy trên sẽ làm lệch kết quả. Tôi không dự đoán chạy truy vấn này thường xuyên và sẽ không bận tâm nếu nó chạy chậm. Nhưng khi một mảnh vỡ không thành công, tôi nhận được kết quả không phù hợp. –

Trả lời

19

Tôi nghĩ tôi đã phát hiện ra lỗi. Tôi đã sử dụng 'dịch vụ' để chạy elasticsearch và do đó các biến môi trường của tôi đã bị tước bỏ. Tôi đã cập nhật các tập tin /etc/default/elasticsearch với các biến env correcct (cụ thể là ES_HEAP_SIZE=16g).

Cho đến nay ứng dụng này hoạt động tốt và ứng dụng không phải là lỗi.

2

Cách đúng để cập nhật Java kích thước heap cho Elasticsearch 5 không phải là EXPORT _JAVA_OPTIONS hoặc EXPORT ES_HEAP_SIZE hoặc sử dụng các tham số dòng lệnh. Theo như tôi có thể nói, tất cả những điều này bị ghi đè bởi tệp cấu hình trong thư mục cài đặt Elasticsearch của bạn, config/jvm.options. Để thay đổi các cài đặt này, bạn cần chỉnh sửa các dòng này trong tệp đó:

# Xms represents the initial size of total heap space 
# Xmx represents the maximum size of total heap space 

-Xms2g 
-Xmx2g 
+2

Chỉ cần lưu ý cho người dùng Windows: 'jvm.options' được sử dụng để xác định các tùy chọn Java khi [cài đặt elasticsearch dịch vụ] (https://www.elastic.co/guide/en/elasticsearch/reference/master/windows.html#windows-service), nhưng sau đó bất kỳ thay đổi nào trong 'jvm.options' sẽ không có hiệu lực cho đến khi bạn tạo lại dịch vụ. – qbik

Các vấn đề liên quan