´ÙÀ½ ÀÌÀü Â÷·Ê

12. Thread Pool Áö¿ø (Tomcat3.2.1)

12.1 Thread »ý¼ºÀ¸·Î ÀÎÇÑ ¹®Á¦Á¡

Tomact Àº multi-thread µÈ servlet container·Î¼­ À̴ Ŭ¶óÀ̾ðÆ®ÃøÀÇ °¢°¢ÀÇ ¿äûÀÌ ¾²·¹µå¿¡ ÀÇÇØ ½ÇÇàµÊÀ» ÀǹÌÇÑ´Ù. Tomcat 3.2 ÀÌÀü ¹öÁ¯¿¡¼­´Â Ŭ¶óÀ̾ðÆ®ÃøÀÇ °¢ ¿äûÀÌ µµÂøÇÒ ¶§¸¶´Ù, ¾²·¹µå°¡ »ý¼ºµÇ¾î °¢ ¿äûÀ» ó¸®ÇÏ°ï ÇÏ¿´´Ù. ÀÌ·¯ÇÑ ÀýÂ÷´Â ¸¹Àº ºÎÇϸ¦ ÀÏÀ¸Å°´Â ¹®Á¦¸¦ ¾ß±âÇϸç, ÀÌ·¯ÇÑ ¹®Á¦µéÀº ´ÙÀ½°ú °°´Ù.

* ¸ðµç ¿äû¿¡ ´ëÇØ ¾²·¹µå¸¦ »ý¼ºÇÏ°í ¼Ò¸êÇÏ´Â °ÍÀº OS¿Í JVM¿¡°Ô ÇÊ¿ä¾ø´Â ¸¹Àº ºÎ´ãÀ» ¾È°ÜÁØ´Ù.

* µ¿½Ã¿¡ ÀÏÁ¤ ÀÌ»óÀÇ ´Ù¼öÀÇ ¿äûÀÌ µé¾î¿Ã °æ¿ì ¸®¼Ò½º(CPU ¹× ¸Þ¸ð¸® ÀÚ¿øµî ) ¼Ò¸ð¿¡ ´ëÇÑ Á¦ÇÑÀÌ ¾î·Æ´Ù. Áï, ¼ø°£ÀûÀ¸·Î ¼­¹ö°¡ ´Ù¿îµÇ°Å³ª ±âŸ µ¿½Ã ´Ù¹ßÀûÀÎ ¿äûÀ» 󸮸øÇØ »ý±â´Â ¹®Á¦°¡ ¾ß±âµÉ ¼ö ÀÖ´Ù.

12.2 ¹®Á¦¿¡ ´ëÇÑ ÇØ°áÃ¥

ÀÌ·¯ÇÑ ¹®Á¦¿¡ ´ëÇÑ ÇØ°áÃ¥À¸·Î´Â Thread PoolÀ» »ç¿ëÇÏ´Â °ÍÀ̸ç Tomcat3.2 ºÎÅÍ´Â µðÆúÆ®·ÎÅèĹ ÀÚü¿¡¼­ Thread Pool À» »ç¿ëÇÑ´Ù. ´ÙÀ½Àº ÅèĹÀÇ Thread Pool ¿¡ ´ëÇÑ ¼³¸íÀÌ´Ù.

a. °¢ ¿äû¿¡ ´ëÇØ ¾²·¹µå¸¦ »ý¼ºÇÏ¿© »ç¿ëÇÏ°í ³­ ÈÄ °è¼ÓÇؼ­ Àç»ç¿ëÇÒ 
   ¼ö ÀÖµµ·Ï »ç¿ëµÈ ¾²·¹µå¸¦ "open" »óÅ·Π°è¼Ó À¯ÁöÇϸç À̸¦ °ü¸®ÇÑ
   ´Ù. °ü¸®µÇ°í ÀÖ´Â ¾²·¹µå´Â ¼Ò¸êµÇÁö ¾Ê°í °è¼Ó "open" »óÅ·ΠÀ¯Áö
   µÇ°í ÀÖ´Ù°¡ ´Ù¸¥ ¿äûÀÌ µé¾î¿À¸é °ü¸®µÇ°í ÀÖ´Â ¾²·¹µå¸¦ »ç¿ëÇÏ¿© 
   ÇØ´ç ¿äûÀ» ó¸®Çϵµ·Ï ÇÑ´Ù. ´Ù½Ã ¿äûÀ» ó¸®ÇÏ°í ³­ ¾²·¹µå´Â °ü¸® 
   ´ë»óÀÌ µÇ¾î °ü¸®µÇ¾î Áö¸ç ¶Ç ´Ù¸¥ ¿äûÀ» ±â´Ù¸°´Ù.
    
b. ÀÌ·¯ÇÑ ¹æ½ÄÀº °¢ ¿äû¿¡ ´ëÇØ ¾²·¹µå¸¦ »ý¼ºÇÏ°í »ç¿ëÇÑ ÈÄ ¼Ò¸êµÇ´Â 
   ¹Ýº¹ÀûÀÎ ÀýÂ÷¸¦ Å»ÇÇÇÏ°Ô Çϸç, ¹Ýº¹ÀûÀÎ ¾²·¹µåÀÇ »ý¼º ¹× ¼Ò¸ê·Î 
   ÀÎÇØ ¾ß±âµÇ´Â ¹®Á¦¸¦ ÇØ°áÇÑ´Ù. 

c. Tomcat 3.2 ºÎÅÍ´Â TomcatÀÇ AdminÀÌ ´ÜÁö server.xml ÆÄÀÏ¿¡ Thread 
   Pool ¿¡ ´ëÇÑ ¼³Á¤¸¸À¸·Î À§ÀÇ »çÇ×À» ÇØ°áÇÒ ¼ö ÀÖµµ·Ï Çϸç, ÀÚ½ÅÀÇ 
   »çÀÌÆ®¿¡ ¸Âµµ·Ï ¾²·¹µåÀÇ Á¦ÇÑ »çÇ×µîÀ» Á¶Á¤ÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. 
 
d. µ¿½Ã¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ¾²·¹µåÀÇ »óÇѼ±, idle »óÅÂÀÇ ¾²·¹µå¿¡ ´ëÇÑ 
   ÃÖ´ë ¾²·¹µå °¹¼ö ¹× ÅèĹ ±âµ¿½Ã »ý¼ºµÉ ÃÖ¼ÒÇÑÀÇ ¾²·¹µå ¼ö¸¦ ¼³Á¤
   ÇÒ ¼ö ÀÖ´Ù. 

12.3 Thread Pool ¼³Á¤ »çÇ×

´ÙÀ½Àº server.xmlÀÇ Thread Pool µðÆúÆ® ¼³Á¤ ºÎºÐÀÌ´Ù.

<Connector className="org.apache.tomcat.service.PoolTcpConnector">
 <Parameter name="handler"
  value="org.apache.tomcat.service.connector.Ajp12ConnectionHandler"/>
 <Parameter name="port"
  value="8007"/>
</Connector>

À§ÀÇ ºÎºÐÀÌ µðÆúÆ® ¾²·¹µå Ç® ¼³Á¤ °ü·Ã ºÎºÐÀÌ´Ù. À§ÀÇ ³»¿ëÀ» ºÁ¼­´Â ¾Æ¹«°Íµµ ¸ð¸£°ÚÁö¸¸ ¾²·¹µå Ç®¿¡ ´ëÇØ ¼³Á¤ÀÌ »ý·«µÇ¸é ¹Ù·Î µðÆúÆ® °ªÀÌ ¼¼ÆõȴÙ.

µðÆúÆ® °ªÀº µ¿½Ã »ç¿ë°¡´ÉÇÑ ¾²·¹µå°¡ 50°³±îÁö (max_threads) À̸ç, idle »óÅÂÀÇ ¾²·¹µå°¡ 25°³ ÀÌ»óÀ̸é (max_spare_threads) ÀÌ¸é ¾²·¹µå »èÁ¦¸¦ ÇÏ°í, ÃÖÃÊ Ç® »ý¼º½Ã 10°³ ¾²·¹µå·Î (min_spare_threads) »óÅ·Π½ÃÀÛÇϸç ÃÖ¼ÒÇÑ 10°³ÀÇ ¾²·¹µå ÀÌ»óÀ» À¯ÁöÇÏ°íÀÚ ÇÑ´Ù.

Âü°í·Î idle »óÅÂÀÇ ¾²·¹µå¶õ ºóµÕºóµÕ ³î°í ÀÖ´Â ¾²·¹µå·Î¼­, ¾ðÁ¦ ¿ÃÁö ¸ð¸£´Â ¿äû¿¡ ´ëÇØ ´ë±âÁßÀÎ ¿©À¯ºÐÀÇ ¾²·¹µåÀÌ´Ù. ÀÌ·¯ÇÑ ¾²·¹µåµéµµ °ü¸® ´ë»óÀ¸·Î¼­ °ü¸®µÇ¾î Áø´Ù.

ÅèĹ ±âµ¿ ÈÄ "ps -aux" ¸¦ Çغ¸¶ó. »ó´çÈ÷ ¸¹Àº ÅèĹÀÌ º¸ÀÏ °ÍÀÌ´Ù.

´ÙÀ½Àº Thread Pool¿¡ ´ëÇÑ ¼³Á¤ ¿¹ÀÌ´Ù.

<Connector className="org.apache.tomcat.service.PoolTcpConnector">
 <Parameter name="handler"
  value="org.apache.tomcat.service.connector.Ajp12ConnectionHandler"/>
 <Parameter name="port"
  value="8007"/>
 <Parameter name="max_threads"
  value="30"/>
 <Parameter name="max_spare_threads"
  value="20"/>
 <Parameter name="min_spare_threads"
  value="5"/>
</Connector>


´ÙÀ½ ÀÌÀü Â÷·Ê