1. ¾îÇø®ÄÉÀÌ¼Ç ¼¹ö¿¡¼ ÇÊ¿äÇÑ ¸Þ¸ð¸® °è»ê ¹æ¹ý - °è»ê½Ä : (MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads - ¸Þ¸ð¸® °è»ê ¿¹ °¡Á¤ : Java 1.5¸¦ »ç¿ëÁßÀ̸ç OS°¡ 120MB¸¦, µðÆúÆ® ½ºÅûçÀÌÁî´Â 0.5M
JVM¿¡ 1.5GBÇÒ´çµÇ¾úÀ» °æ¿ì : (2GB-1.5Gb-120MB)/(1MB) = ~380 threads JVM¿¡ 1.0GBÇÒ´çµÇ¾úÀ» °æ¿ì : (2GB-1.0Gb-120MB)/(1MB) = ~880 threads Åë°èÀûÀ¸·Î ´ë·« 200¸íÀÇ µ¿½Ã »ç¿ëÀÚ ¼ö¿ëÇÒ °æ¿ì 300MBÁ¤µµ ÇÊ¿äÇÏÇÕ´Ï´Ù. ÀÌ°ÍÀ» °í·ÁÇؼ ¸Þ¸ð¸®¸¦ °è»êÇÏ¸é µË´Ï´Ù.
2. Application Server ¿¡·¯ ´ëó ¹æ¾È(java.lang.OutOfMemoryError: PermGen space Çö»ó)
TomcatÀÇ °æ¿ì v6.0.14ÀÌ»óÀÇ ¾ÈÁ¤Àû ¸±¸®Áî µÈ°ÍÀ» ¼±Åà JDK1.4º¸´Ù´Â 1.5, 1.6ÀÇ »ç¿ëÀ» ±Ç°íÇÔ -XXMaxPermSize ¼³Á¤À» ÅëÇØ perm »çÀÌÁ Áõ°¡½ÃÅ´ JHatÀ¸·Î ¸Þ¸ð¸®¸¯ ¿øÀÎÀ» ã°í JConsole, Lambda probe µîÀ» ÅëÇØ ¸Þ¸ð¸® ¸ð´ÏÅ͸µÀ» ÇÔ Application Server¿î¿µÀÚ´Â Garbage Collection¿¡ ´ëÇÑ ÀÌÇØ°¡ ÀÖ¾î¾ß ÇÔ 3. Tomcat¿¡¼ ¼³Á¤ ¿¹½Ã
Èü¸Þ¸ð¸® Á¤º¸¸¦ Ãâ·Â : -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC À§ ¼³Á¤À» ÅëÇØ Ãâ·ÂµÇ´Â ·Î±×¸¦ º¸°í New GenerationÀÇ eden ¿µ¿ª, Old Generation ¿µ¿ª, Permanent ¿µ¿ªÀ» È®ÀÎÇÏ¿© °¢ ¿µ¿ªÀÌ ÀÛÀ¸¸é ¾Æ·¡¿Í °°Àº ¼³Á¤À¸·Î Àû´ç »çÀÌÁ È®º¸ÇØ ÁÝ´Ï´Ù.
µµÃâµÈ ¼³Á¤ : -Xms256m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m -XX:SurvivorRatio=5 -Xms : ÃÖ¼Ò Èü ½ÎÀÌÁî -Xmx : ÃÖ´ë Èü ½ÎÀÌÁî -XX:NewSize : New GenerationÀÇ ÃÖ¼Ò ½ÎÀÌÁî -XX:MaxNewSize : New GenerationÀÇ ÃÖ´ë ½ÎÀÌÁî -XX:MaxPermSize : Permanent GenerationÀÇ ÃÖ´ë ½ÎÀÌÁî °¡ µÇ°Ú´Ù. -XX:SurvivorRatio : ¿µ¿ªºñÀ²(New Generation) °á·ÐÀûÀ¸·Î Àû¿ëÇÒ ¼³Á¤Àº ¾Æ·¡¿Í °°½À´Ï´Ù.
CATALINA_OPTS="-server -Xss256k -Xms256m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m -XX:SurvivorRatio=5 -XX:ReservedCodeCacheSize=128m -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true" Open Soure´Â 100% ¾ÈÁ¤ÀûÀÌÁö ¾Ê±â ¶§¹®¿¡ °¡Àå ÃÖ½ÅÀÇ ¾ÈÁ¤ÀûÀÎ ¹öÁ¯ÀÌ ¸±¸®ÁîµÇ´ÂÁö Ç×»ó ¿¹ÀÇ ÁÖ½ÃÇÏ¿© ¹öÀü¾÷¿¡ °ÔÀ»·¯¼´Â ¾ÈµË´Ï´Ù
|