Saya memiliki server Apache dengan konfigurasi default Elasticsearch dan semuanya bekerja dengan sempurna, kecuali konfigurasi default memiliki ukuran maksimal 1GB.
Saya tidak memiliki sejumlah besar dokumen untuk disimpan di Elasticsearch, jadi saya ingin mengurangi memori.
Saya telah melihat bahwa saya harus mengubah -Xmx
parameter dalam konfigurasi Java, tetapi saya tidak tahu caranya.
Saya telah melihat saya dapat melakukan ini:
bin/ElasticSearch -Xmx=2G -Xms=2G
Tetapi ketika saya harus memulai ulang Elasticsearch, ini akan hilang.
Apakah mungkin untuk mengubah penggunaan memori maksimal saat Elasticsearch diinstal sebagai layanan?
elasticsearch
Patxi 1980
sumber
sumber
index.number_of_shards: 1 index.number_of_replicas: 0
Dengan cara ini Anda menghemat memori dan cpu dengan tidak melakukan pekerjaan yang tidak perlu .Jawaban:
Di ElasticSearch> = 5 , dokumentasi telah berubah , yang berarti tidak ada jawaban di atas yang berhasil untuk saya.
Saya mencoba mengubah
ES_HEAP_SIZE
masuk/etc/default/elasticsearch
dan masuketc/init.d/elasticsearch
, tetapi ketika saya menjalankanps aux | grep elasticsearch
hasilnya masih menunjukkan:/usr/bin/java -Xms2g -Xmx2g # aka 2G min and max ram
Saya harus melakukan perubahan ini dalam:
/etc/elasticsearch/jvm.options
sumber
/usr/local/opt/elasticsearch/libexec/config/jvm.options
/usr/local/etc/elasticsearch/jvm.options
Diperbarui pada 24 Nov 2016 : Elasticsearch 5 tampaknya telah mengubah cara untuk mengkonfigurasi JVM. Lihat jawaban ini di sini . Jawaban di bawah ini masih berlaku untuk versi <5.
tirdadc, terima kasih telah menunjukkan hal ini dalam komentar Anda di bawah.
Saya memiliki halaman pastebin yang saya bagikan dengan orang lain ketika bertanya-tanya tentang memori dan ES. Ini bekerja dengan baik untuk saya: http://pastebin.com/mNUGQCLY . Saya juga akan menempelkan konten di sini:
Referensi:
https://github.com/grigorescu/Brownian/wiki/ElasticSearch-Configuration http://www.elasticsearch.org/guide/reference/setup/installation/
Edit file berikut untuk mengubah memori dan batas nomor file. Instruksi ini mengasumsikan Ubuntu 10.04, dapat berfungsi pada versi yang lebih baru dan distribusi / OS lain. ( Sunting : Ini juga berfungsi untuk Ubuntu 14.04.)
/etc/security/limits.conf :
/ etc / default / elasticsearch (di CentOS / RH: / etc / sysconfig / elasticsearch) :
/etc/elasticsearch/elasticsearch.yml :
sumber
/etc/default
berada di bawah `/ etc / sysconfig '/etc/sysconfig/elasticsearch
adalah tempat yang tepat untuk melakukan perubahan ini. RPM bahkan menyediakan versi default dari file ini di sana juga./etc/security/limits.d/elasticsearch.conf
Bagi siapa pun yang ingin melakukan ini di Centos 7 atau dengan sistem lain yang menjalankan SystemD, Anda dapat mengubahnya
Batalkan komentar pada baris ES_HEAP_SIZE, dan tetapkan nilai, misalnya:
(Abaikan komentar tentang maks 1g - itu default)
sumber
Instruksi untuk
ubuntu 14.04
:sudo vim /etc/init.d/elasticsearch
Set
ES_HEAP_SIZE=512m
lalu masuk:
sudo vim /etc/elasticsearch/elasticsearch.yml
Set:
bootstrap.memory_lock: true
Ada komentar di file untuk info lebih lanjut
sumber
Jawaban sebelumnya tidak cukup dalam kasus saya, mungkin karena saya menggunakan Debian 8, sementara mereka dirujuk ke distribusi sebelumnya.
Di Debian 8, ubah skrip layanan yang biasanya ditempatkan
/usr/lib/systemd/system/elasticsearch.service
, dan tambahkanEnvironment=ES_HEAP_SIZE=8G
tepat di bawah baris "Environment = *" lainnya.Sekarang muat ulang skrip layanan dengan
systemctl daemon-reload
dan mulai ulang layanan. Pekerjaan harus selesai!sumber
/usr/
?Jika Anda menggunakan pembungkus layanan yang disediakan di Github repository Elasticsearch ini, ditemukan di https://github.com/elasticsearch/elasticsearch-servicewrapper , maka file conf di elasticsearch-servicewrapper / layanan / elasticsearch.conf pengaturan kontrol memori. Di bagian atas elasticsearch.conf adalah parameter:
Kurangi saja parameter ini, katakan ke "set.default.ES_HEAP_SIZE = 512", untuk mengurangi memori yang dialokasikan Elasticsearch.
Perhatikan bahwa jika Anda menggunakan elasticsearch-wrapper, ES_HEAP_SIZE yang disediakan di elasticsearch.conf MENGATASI SEMUA SETELAN LAINNYA. Ini membuat saya sedikit mencari tahu, karena dari dokumentasinya, tampaknya memori heap dapat disetel dari elasticsearch.yml.
Jika setelan pembungkus layanan Anda disetel di tempat lain, seperti di / etc / default / elasticsearch seperti dalam contoh James, setel ES_HEAP_SIZE di sana.
sumber
export ES_HEAP_SIZE=1G; bin/elasticsearch -d
Jika Anda menginstal ES menggunakan paket RPM / DEB yang disediakan (seperti yang Anda lihat), Anda dapat menyesuaikannya dengan mengedit skrip init (
/etc/init.d/elasticsearch on RHEL/CentOS
). Jika Anda melihat file tersebut, Anda akan melihat blok dengan berikut ini:Untuk menyesuaikan ukuran, cukup ubah
ES_HEAP_SIZE
garis menjadi berikut:(di mana x adalah jumlah MB / GB RAM yang ingin Anda alokasikan)
Contoh:
Akan mengalokasikan 1GB.
Setelah Anda mengedit skrip, simpan dan keluar, lalu mulai ulang layanan. Anda dapat memeriksa apakah sudah disetel dengan benar dengan menjalankan yang berikut ini:
Dan memeriksa tanda -Xms dan -Xmx dalam proses java yang mengembalikan:
Semoga ini membantu :)
sumber
Jangan setel Xmx di atas batas yang digunakan JVM untuk penunjuk objek terkompresi (oops terkompresi), batas yang tepat bervariasi tetapi mendekati 32 GB.
Dimungkinkan juga untuk menyetel ukuran heap melalui variabel lingkungan
sumber
Dalam elasticsearch path home dir
/usr/share/elasticsearch
, biasanya , Ada file konfigurasibin/elasticsearch.in.sh
. Mengedit parameterES_MIN_MEM
,ES_MAX_MEM
di file ini untuk perubahan-Xms2g
,-Xmx4g
masing-masing. Dan Harap pastikan Anda telah memulai ulang node setelah konfigurasi ini diubah.sumber
Jika Anda menggunakan server windows, Anda dapat mengubah Variabel Lingkungan, restart server untuk menerapkan Nilai Lingkungan baru dan memulai Layanan Elastis. Detail selengkapnya di Instal Elastic di Windows Server
sumber
Di elasticsearch 2.x:
Buka blok kode
Batalkan komentar pada baris terakhir seperti
sumber