Elasticsearch ตั้งค่าขนาดหน่วยความจำสูงสุด

Elasticsearch Tang Kha Khnad Hnwy Khwam Ca Sungsud



“หน่วยความจำเป็นทรัพยากรที่จำเป็นแต่มีจำกัดเมื่อทำงานกับ Elasticsearch เนื่องจาก Lucene จะใช้หน่วยความจำที่มีอยู่ทั้งหมด อย่างไรก็ตาม เมื่อกำหนดค่าผิดพลาด การตั้งค่าหน่วยความจำอาจทำให้ประสิทธิภาพต่ำและการใช้หน่วยความจำไม่มีประสิทธิภาพ”

ในบทช่วยสอนนี้ เราจะแสดงการกำหนดค่า JVM Heap Size สูงสุดและต่ำสุดเมื่อทำงานกับ Elasticsearch







มาเริ่มกันเลย.



หน่วยความจำฮีปคืออะไร?

ในบริบทของ Elasticsearch หน่วยความจำฮีปหมายถึงจำนวนหน่วยความจำทั้งหมดที่จัดสรรให้กับ Java Virtual Machine ภายในโหนด Elasticsearch



Elasticsearch จะกำหนดขนาดเริ่มต้นของ JVM Heap ตามหน่วยความจำทั้งหมดของระบบฐานและบทบาทของโหนด ซึ่งหมายความว่าการจัดสรรขนาดหน่วยความจำฮีพอาจแตกต่างกันไปขึ้นอยู่กับว่าเป็นโหนดหลัก ข้อมูล การนำเข้า data_cold เป็นต้น





สำหรับสภาพแวดล้อมการผลิตส่วนใหญ่ ขอแนะนำให้อนุญาตให้ Elasticsearch จัดการขนาดฮีพและมากเกินพอ

บันทึก : หากคุณใช้งาน Elasticsearch ใน Docker หน่วยความจำฮีปทั้งหมดจะขึ้นอยู่กับขนาดรวมของคอนเทนเนอร์นักเทียบท่า ไม่ใช่โฮสต์ของ Docker



การกำหนดค่าขนาดฮีปต่ำสุดและสูงสุด

ในการกำหนดค่าขนาดฮีปต่ำสุดและสูงสุด เราสามารถใช้พารามิเตอร์ Xms และ Xmx Probits ของ Elasticsearch กำลังตั้งค่าหน่วยความจำสูงสุดเป็นไม่เกิน 50% ของหน่วยความจำทั้งหมด เนื่องจากนอกเหนือจาก JVM Heap แล้ว Elasticsearch ยังต้องการหน่วยความจำเพิ่มเติมสำหรับการดำเนินการอื่นๆ เช่น แคชของระบบไฟล์ การสื่อสารเครือข่าย ฯลฯ ในทำนองเดียวกัน JVM จะใช้ส่วนของหน่วยความจำ 50% ที่เหลือ

ประการที่สอง อย่าตั้งค่า xms และ xmx ให้เกินขีดจำกัดของอ๊ะ สำหรับการกำหนดค่าที่ปลอดภัย ให้จำกัดไว้ที่ 26GB หรือ 30GB ในบางระบบ

คุณสามารถตรวจสอบขีดจำกัดได้ในบันทึกของ Elasticsearch

cat elasticsearch.log | grep 'ตัวชี้วัตถุ'

คุณควรเห็นรายการตามที่แสดง:

[2022-08-19T20:01:50,275][INFO ][o.e.NodeEnvironment    ] [debian11] ขนาดฮีป [1.9gb] ตัวชี้อ็อบเจ็กต์ธรรมดาที่ถูกบีบอัด [จริง]
[2022-08-19T20:08:07,207][INFO ][o.e.NodeEnvironment    ] [debian11] ขนาดฮีป [1.9gb] ตัวชี้อ็อบเจ็กต์ธรรมดาที่ถูกบีบอัด [จริง]
[2022-08-19T20:36:47,244][INFO ][o.e.NodeEnvironment    ] [debian11] ขนาดฮีป [1.9gb] ตัวชี้อ็อบเจ็กต์ธรรมดาที่ถูกบีบอัด [จริง]

คุณยังสามารถสืบค้น API ข้อมูลโหนดสำหรับค่า xms และ xmx:

curl -X GET localhost:9200/_nodes/_all/jvm?pretty

คุณควรเห็นผลลัพธ์ตามที่แสดง:

ตั้งค่าขนาดฮีปต่ำสุดและสูงสุด

ในการแก้ไขค่าของ JVM Heap Size คุณต้องเพิ่มไฟล์คอนฟิกูเรชันในไดเร็กทอรี /etc/elasticsearch/jvm.options.d ไฟล์นี้ควรลงท้ายด้วยนามสกุล .options

ตัวอย่างเช่น:

$ sudo touch /etc/elasticsearch/jvm.options.d/heap.options

แก้ไขไฟล์

$ sudo nano /etc/elasticsearch/jvm.options.d/heap.options

เพิ่มขนาดหน่วยความจำฮีปต่ำสุดและสูงสุดที่ต้องการ

ตัวอย่างเช่น รายการด้านล่างกำหนดค่าขนาดฮีปต่ำสุดและสูงสุดเป็น 4GB

บันทึกไฟล์และเริ่มต้นบริการ Elasticsearch ใหม่

บทสรุป

ในบทช่วยสอนนี้ คุณได้เรียนรู้ JVM Heap ในบริบทของ Elasticsearch วิธีที่ Elasticsearch กำหนดค่า JVM Heap และวิธีแก้ไขขนาดฮีป

ขอบคุณที่อ่าน!!