การแก้ไขการตั้งค่าหน่วยความจํา 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 ui.properties 512MB 512MB
OpenLDAP ไม่มี แอปที่มาพร้อมเครื่อง3 แอปที่มาพร้อมเครื่อง3
ผู้ดูแลสวนสัตว์ 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

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

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

bin_setenv_max_mem

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

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

bin_setenv_meta_space_size

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

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

เมื่อตั้งค่าพร็อพเพอร์ตี้ขนาดฮีปในโหนด ให้ใช้คำต่อท้าย "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