สำหรับระบบงานที่ run ใน JVM (Java Virtual Machine) นั้น
ไม่ว่าจะเป็น Java Spring, Apache Spark, Apache Kafka และอื่น ๆ
มีนำมาอยู่ในโลกของ container แล้วนั้น
พบว่าจะมีปัญหาเรื่องการจัดการและใช้งาน memory และ CPU เป็นอย่างมาก
ทั้งกิน memory และใช้ CPU เกินขนาดที่กำหนด
ทำให้ประสิทธิภาพการทำงานใน container แย่มาก ๆ

แต่ใน Java 10 พบว่ามีการแก้ไขและปรับปรุงให้แล้ว ประกอบไปด้วย

  • กำหนด memory limit ในแต่ละ container
  • กำหนดจำนวน CPU ในแต่ละ container

น่าจะทำให้ชีวิตดีขึ้นมาอีกพอสมควร

ตัวอย่างการกำหนด memory limit ให้แต่ละ container
ทำการกำหนด memory ขนาด 512M
ขนาดของ Heap ต้องมีขนาด 1/4 ของที่จองไว้
แน่นอนว่าใน Java 10 แก้ไขแล้ว นั่นคือมีขนาดประมาณ 130M ดังนี้

ตัวอย่างการกำหนดจำนวน CPU ให้แต่ละ container
ทำการกำหนด CPU ไป 2 ดังนี้

จากการใช้งานพบ Java 10 ทำให้เราไม่ต้องมาพะวงเรื่องเหล่านี้ต่อไปอีกแล้ว
ไปทำ profiling กันดีกว่า ว่าระบบงานในแต่ละ container
ต้องใช้ resource เท่าไรกันแน่

ขอให้สนุกกับการ coding นะครับ

Reference Websites
https://blog.docker.com/2018/04/improved-docker-container-integration-with-java-10/