การแก้ไขการตั้งค่าหน่วยความจํา Java

คุณอาจต้องเปลี่ยนขนาดหน่วยความจำฮีป หรือขนาดข้อมูลเมตาของคลาสสำหรับโหนดที่เรียกใช้คอมโพเนนต์ Private Cloud ที่ใช้ Java ทั้งนี้ขึ้นอยู่กับข้อกำหนดด้านการเข้าชมและการประมวลผล

ส่วนนี้จะแสดงขนาดหน่วยความจำฮีปเริ่มต้นและที่แนะนำของ Java รวมถึงกระบวนการเปลี่ยนค่าเริ่มต้น และสุดท้าย ส่วนนี้จะอธิบายวิธีเปลี่ยนการตั้งค่า JVM อื่นๆ โดยใช้ไฟล์พร็อพเพอร์ตี้

ขนาดหน่วยความจำฮีปเริ่มต้นและที่แนะนำ

ตารางต่อไปนี้แสดงขนาดหน่วยความจำฮีปเริ่มต้นและที่แนะนำของ Java สำหรับคอมโพเนนต์ Private Cloud ที่ใช้ Java

ส่วนประกอบ ชื่อไฟล์พร็อพเพอร์ตี้ ค่าเริ่มต้น
ขนาดฮีป
ค่าที่แนะนำ
ขนาดฮีป
รันไทม์
Cassandra ไม่มี กำหนดค่าโดยอัตโนมัติ1 กำหนดค่าโดยอัตโนมัติ1
Message Processor message‑processor.properties 512MB 3GB - 6GB2
เราเตอร์ router.properties 512MB 512MB
Analytics
เซิร์ฟเวอร์ Postgres postgres‑server.properties 512MB 512MB
เซิร์ฟเวอร์ Qpid qpid‑server.properties 512MB 2GB - 4GB
การจัดการ
เซิร์ฟเวอร์การจัดการ management‑server.properties 512MB 512MB
UI ของ Edge ใหม่ (edge-management-ui) ไม่มี แอปที่มาพร้อมเครื่อง3 แอปที่มาพร้อมเครื่อง3
SymasLDAP ไม่มี แอปที่มาพร้อมเครื่อง3 แอปที่มาพร้อมเครื่อง3
Zookeeper zookeeper.properties 2048MB 2048MB
หมายเหตุ

1 Cassandra จะคำนวณขนาดฮีปสูงสุดแบบไดนามิกเมื่อ เริ่มต้นระบบ ปัจจุบัน ขนาดฮีปสูงสุดคือครึ่งหนึ่งของหน่วยความจำระบบทั้งหมด โดยมีขนาดสูงสุด 8192 MB ดูข้อมูลเกี่ยวกับการตั้งค่าขนาดฮีปได้ที่ เปลี่ยนขนาดหน่วยความจำ ฮีป

2 สำหรับ Message Processor นั้น Apigee แนะนำให้ตั้งค่าขนาดฮีป ไว้ระหว่าง 3 GB ถึง 6 GB และให้เพิ่มขนาดฮีปให้มากกว่า 6 GB หลังจากทำการทดสอบประสิทธิภาพแล้วเท่านั้น

หากการใช้ฮีปใกล้ถึงขีดจำกัดสูงสุดระหว่างการทดสอบประสิทธิภาพ ให้เพิ่ม ขีดจำกัดสูงสุด ดูข้อมูลเกี่ยวกับการตั้งค่าขนาดฮีปได้ที่ เปลี่ยนขนาดหน่วยความจำฮีป

3 คอมโพเนนต์ Private Cloud บางรายการไม่ได้ใช้งานใน Java เนื่องจาก ไม่ได้ใช้ Java เป็นหลัก แอปที่ทำงานแบบเนทีฟบนแพลตฟอร์มโฮสต์จึงไม่มี ขนาดฮีปของ Java ที่กำหนดค่าได้ แต่จะอาศัยระบบโฮสต์ในการจัดการหน่วยความจำ แทน

หากต้องการทราบจำนวนหน่วยความจำทั้งหมดที่ Apigee แนะนำให้จัดสรรให้กับคอมโพเนนต์ที่ใช้ Java บนโหนด ให้รวมค่าที่แสดงไว้ข้างต้นสำหรับคอมโพเนนต์แต่ละรายการในโหนดนั้น ตัวอย่างเช่น หาก โหนดโฮสต์ทั้งเซิร์ฟเวอร์ Postgres และ Qpid, Apigee แนะนำให้จัดสรรหน่วยความจำรวม ไว้ระหว่าง 2.5 GB ถึง 4.5 GB

ดูรายการฮาร์ดแวร์ที่จำเป็น (เช่น RAM) ได้ที่ ข้อกำหนดในการติดตั้ง

เปลี่ยนขนาดหน่วยความจำฮีป

หากต้องการเปลี่ยนการตั้งค่าหน่วยความจำฮีป ให้แก้ไขไฟล์พร็อพเพอร์ตี้ของคอมโพเนนต์ เช่น หากต้องการเปลี่ยนการตั้งค่าของ Message Processor ให้แก้ไขไฟล์ /opt/apigee/customer/application/message-processor.properties

หากไฟล์ message-processor.properties ไม่มีอยู่ หรือหากไฟล์ .properties ที่เกี่ยวข้องสำหรับคอมโพเนนต์ Edge ไม่มีอยู่ ให้สร้างไฟล์ดังกล่าว แล้วเปลี่ยนการเป็นเจ้าของไฟล์เป็นผู้ใช้ "apigee" ดังที่แสดงในตัวอย่างต่อไปนี้

chown apigee:apigee /opt/apigee/customer/application/message-processor.properties

หากติดตั้งคอมโพเนนต์ในเครื่องหลายเครื่อง เช่น Message Processor คุณ ต้องแก้ไขไฟล์พร็อพเพอร์ตี้ในเครื่องทั้งหมดที่โฮสต์คอมโพเนนต์

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้ที่คุณแก้ไขเพื่อเปลี่ยนขนาดฮีป

พร็อพเพอร์ตี้ คำอธิบาย
bin_setenv_min_mem

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

การตั้งค่านี้สอดคล้องกับตัวเลือก -Xms ของ Java

bin_setenv_max_mem

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

การตั้งค่านี้สอดคล้องกับตัวเลือก -Xmx ของ Java

bin_setenv_meta_space_size

ขนาดข้อมูลเมตาของคลาสเริ่มต้น ค่าเริ่มต้นจะตั้งค่าเป็นค่าของ bin_setenv_max_permsize ซึ่งมีค่าเริ่มต้นเป็น 128 MB ใน Message Processor นั้น Apigee แนะนำให้ตั้งค่านี้เป็น 256 MB หรือ 512 MB ทั้งนี้ขึ้นอยู่กับการเข้าชม

การตั้งค่านี้สอดคล้องกับตัวเลือก -XX:MetaspaceSize ของ Java

เมื่อตั้งค่าพร็อพเพอร์ตี้ขนาดฮีปในโหนด ให้ใช้คำต่อท้าย "m" เพื่อระบุเมกะไบต์ ดังที่ แสดงในตัวอย่างต่อไปนี้

bin_setenv_min_mem=4500m
bin_setenv_max_mem=4500m
bin_setenv_meta_space_size=1024m

หลังจากตั้งค่าในไฟล์พร็อพเพอร์ตี้แล้ว ให้รีสตาร์ทคอมโพเนนต์

/opt/apigee/apigee-service/bin/apigee-service component restart

เช่น

/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

เปลี่ยนพร็อพเพอร์ตี้ JVM อื่นๆ

สำหรับการตั้งค่า Java ที่ไม่ได้ควบคุมโดยพร็อพเพอร์ตี้ที่แสดงไว้ข้างต้น คุณยังตั้งค่าต่อไปนี้ในไฟล์พร็อพเพอร์ตี้ที่เกี่ยวข้องสำหรับคอมโพเนนต์ Edge ได้ด้วย

  • bin_setenv_ext_jvm_opts: ตั้งค่าพร็อพเพอร์ตี้ Java ใดก็ได้ที่ไม่ได้ระบุโดยพร็อพเพอร์ตี้อื่นๆ เช่น
    bin_setenv_ext_jvm_opts=-XX:MaxGCPauseMillis=500

    อย่างไรก็ตาม ห้ามใช้ bin_setenv_ext_jvm_opts เพื่อ ตั้งค่า -Xms, -Xmx หรือ -XX:MetaspaceSize เนื่องจากค่าเหล่านี้ควบคุมโดยพร็อพเพอร์ตี้ที่แสดงไว้ข้างต้น

ดูเคล็ดลับเพิ่มเติมเกี่ยวกับการกำหนดค่าหน่วยความจำสำหรับคอมโพเนนต์ Private Cloud ได้ใน บทความ นี้ในฟอรัม Edge