Wednesday, April 24, 2013

วิธีเพิ่ม heap size ใน tomcat (version 7)

ปัญหาเรื่อง heap size หรือ memory ใน tomcat มักจะมีสาเหตุมาจากการเขียนโค้ดที่ไม่ค่อยประณีต เช่น อาจมีการลืมปิด database connection หรือดึงข้อมูลที่ไม่จำเป็นขึ้นมาจำนวนมากแล้วไม่มีการเรียกใช้งาน ดังนั้นแทนที่จะทำการเพิ่ม heap size ให้กับ tomcat แนะนำว่าในขั้นแรกให้เราตรวจสอบการเขียนโค้ดของเราเสียก่อน

อย่างไรก็ตามปัญหา heap size อาจสังเกตุได้จากเมื่อเราทำการ upload ไฟล์ .war ขึ้นไปบน tomcat แล้วโปรเจคจะอยู่ในสถานะ stop ตลอดเวลา และถ้าหากสังเกตุที่ log (ดูได้ที่ /var/log/tomcat7/...) จะเจอ error ที่ว่า java.lang.OutOfMemoryError: Java heap space

วิธีเพิ่ม heap size ให้กับ tomcat
1) เปิดไฟล์ /usr/share/tomcat7/bin/catalina.sh ขึ้นมา
2) หาบรรทัดที่มีคำว่า "JAVA_OPTS=" ซึ่งโดยทั่วไปโค้ดคือ
if [ -z "$LOGGING_MANAGER" ]; then
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
else
JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER"
fi
3) ที่ท้ายของ JAVA_OPTS ให้เพิ่ม "-Xms256m -Xmx512m" เข้าไปตามตัวอย่างด้านล่าง
if [ -z "$LOGGING_MANAGER" ]; then
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms256m -Xmx512m" (ให้ min memory เป็น 256 และ max memory เป็น 512 ตรงนี้เราสามารถใส่ตัวเลขอื่นๆ ที่เราต้องการได้)
else
JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER -Xms256m -Xmx512m"
fi
4) ทำการ restart tomcat

No comments:

Post a Comment