±Û¾´ÀÌ:¹®ÅÂÁØ  À¥»çÀÌÆ® ¼º´É°³¼± À§ÇÑ Ä¿³Î Æ©´× »ç·Ê Á¶È¸¼ö:1187 


taejun@tunelinux.pe.kr
http://tunelinux.pe.kr/



´ÙÀ½Àº ¸ð À¥»çÀÌÆ®ÀÇ ¼º´É°³¼±À» À§ÇÑ Ä¿³Î Æ©´× »ç·ÊÀÔ´Ï´Ù. ½É½ÉÇÑ ºÐµé Çѹø ¿¬±¸¸¦ ÇØ º¸¼¼¿ä. (½ÇÀº ³ªµµ Àß ¸ð¸§) Àú´Â ±×³É ÀڷḸ ¿Å°Ü¿ÔÀ» »ÓÀÔ´Ï´Ù. 

Âü°íÀÚ·á 
http://www.apache.org/docs/misc/perf-tuning.html 
web performance tunning - ¿À·¼¸® 

±×·¸Áö¸¸ ¸í½ÉÇÒ Á¡ÀÌ ÀÖ½À´Ï´Ù. À¥»çÀÌÆ®ÀÇ ¼º´É °³¼±À» À§Çؼ­´Â Ä¿³Î¿¡¼­¸¸ ¼Õ´ëÁÖ´Â °ÍÀÌ ¾Æ´Ï¶ó OS, ³×Æ®¿÷, ÇÁ·Î±×·¡¹Ö µî ´Ù¾çÇÑ Á¶°ÇÀ» °°ÀÌ °í·ÁÇØ¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ¶ÇÇÑ Çϵå¿þ¾î ¼º´ÉÀ» °í·ÁÇÏÁö ¾ÊÀºÃ¤ ¹«ÀÛÁ¤ ¹Ù²Ù¸é ¹®Á¦°¡ »ý±ä´Ù´Â °ÍÀÔ´Ï´Ù. ¶ÇÇÑ ÀϹÝÀûÀ¸·Î Á¤ÀûÀÎ html¼­ºñ½º´Â ¹®Á¦°¡ ¾ÈµÇÁö¸¸ ¼º´ÉÀÇ º´¸ñÁöÁ¡ÀÌ »ý±â´Â °÷Àº ³×Æ®¿÷ÀÌ ¾Æ´Ï¶ó¸é cgiÀÏ °æ¿ì°¡ ¸¹½À´Ï´Ù. ¾ÆÆÄÄ¡¿¡ µé¾îÀÖ´Â ab, À¯´Ð½ºÀÇ time, ping, netstat µî ´Ù¾çÇÑ ¸í·É¾îµéÀ» ÀÌ¿ëÇؼ­ Ç×»ó ½Ã½ºÅÛÀÇ »óŸ¦ ¸ð´ÏÅ͸µÇغ¸°í ¼Óµµ¸¦ Àç¾î º¸¾Æ¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ ¾Æ¹«¸® Æ©´×À» ÀßÇصµ À¥ÆäÀÌÁö¿¡ À̹ÌÁö¸¦ ¾öû³ª°Ô ³Ö¾îµÐ´Ù¸é ÇêÀÏÇϴ°ÍÀÌÁö¿ä. Àúµµ Àß ¸ð¸£¸é¼­ ¾î¼³Å©°Ô ¿À¶óŬ Æ©´×À» ÇÑ´Ù°í Çß´õ´Ï cpu 4°³, ¸Þ¸ð¸® 2GÀÎ ½Ã½ºÅÛ¿¡¼­ ¿ÀÈ÷·Á ÀϹÝPCº¸´Ù ¿À¶óŬÀÌ ´õ ´À·ÁÁö´õ±º¿ä. Àß ¸ð¸£´Â °æ¿ì¿¡´Â ±âº»°ªÀ» »ç¿ëÇÏ´Â °ÍÀÌ ´õ ³ªÀ»¶§µµ ÀÖÁö¿ä. ¾Æ·¡ ¿¹¿¡¼­ keepalive ¿É¼ÇÀº ´ëÇü »çÀÌÆ®°°Àº °æ¿ì¿¡´Â off·Î ÇØ ³õ´Â °ÍÀÌ ´õ ³ªÀº °æ¿ìµµ ¸¹ÀÌ ÀÖ½À´Ï´Ù. »¡¸® ó¸®ÇÏ°í ¿¬°áÀ» »¡¸®»¡¸® ²÷¾îÁÖ´Â °ÍÀÌ ¾Æ¹«Àϵµ ÇÏÁö ¾ÊÀºÃ¤ ±×³É ÇÁ·Î¼¼½º¸¦ ¶ç¿ö³õ°í ³î¸®´Â °Íº¸´Ù´Â ³´Áö¿ä. 

¹®ÅÂÁØ(taejun@tunelinux.pe.kr http://tunelinux.pe.kr) 


¤· ¾ÆÆÄÄ¡ À¥ ¼­¹ö Æ©´× 

¾ÆÆÄÄ¡ À¥ ¼­¹öÀÇ Æ©´×Àº °£·«ÇÏ°Ô µÎ ºÎºÐÀ¸·Î ³ª´­ ¼ö ÀÖ´Ù. ù ¹ø°´Â ¼Ò½ºÄڵ忡 ÇϵåÄÚµù µÇ¾î ÀÖ´Â Á¦ÇÑ °ªÀ» Á¶Á¤ÇÏ´Â °ÍÀÌ°í, µÎ ¹ø°´Â ȯ°æ¼³Á¤ ÆÄÀÏÀÇ °¢ Á¦ÇÑ °ªµéÀ» ¼öÁ¤ÇÏ´Â °ÍÀÌ´Ù. 

1) ¼Ò½º·¹º§ 
httpd.h ÆÄÀÏ¿¡ ¸®´ª½ºÀÇ °æ¿ì HARD_SERVER_LIMIT °ªÀÌ 256À¸·Î ±âº» ¼³Á¤µÇ¾î ÀÖÀ¸¸ç, ÀÌ °ªÀº ¼­¹ö°¡ ¼ö¿ëÇÒ ¼ö ÀÖ´Â ÃÖ´ë Á¢¼ÓÀ» ÀǹÌÇÑ´Ù. ÀÌ °ªÀ» 1280À¸·Î ¼³Á¤ÇÑ´Ù. 

2) ȯ°æ¼³Á¤ ÆÄÀÏ 
°¡. KeepAliveTimeout 
Ŭ¶óÀ̾ðÆ®°¡ ¼­¹ö·Î Á¢¼ÓÀ» ÇßÀ» °æ¿ì ÇϳªÀÇ À¥ ¼­¹ö ÇÁ·Î¼¼½º°¡ ÇØ´ç À¥ ÆäÀÌÁöÀÇ ¿©·¯ °³Ã¼µéÀÇ Àü¼ÛÀ» »õ·Î¿î ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÏÁö ¾Ê°í Áö¼ÓÀûÀ¸·Î Á¢¼ÓÀ» À¯ÁöÇÏ¸ç ´ã´çÇϸç, ÀÌ Å¬¶óÀ̾ðÆ®ÀÇ ¿äû¿¡ ´ëÇÑ Å¸ÀӾƿô¿¡ ´ëÇÑ °ªÀÌ´Ù. ±âº» 15ÃÊ¿¡¼­ 30ÃÊ·Î Áõ°¡. 
³ª. MaxKeepAliveRequests 
À¥ ¼­¹ö ÇÁ·Î¼¼½º°¡ Áö¼ÓÀûÀ¸·Î Á¢¼ÓÀ» À¯ÁöÇϸ鼭 ó¸®ÇÒ ¼ö ÀÖ´Â ¿äû °³¼öÀÌ´Ù. 
100À¸·Î ¼³Á¤µÇ¾î ÀÖÀ¸¸ç, 10000À¸·Î Áõ°¡. 
´Ù. StartServer, Min/MaxSpareServer 
±âº» ¼³Á¤Àº 5, 5, 10Á¤µµÀ̸ç, À¥ ¼­¹ö°¡ Standalone ¹æ½ÄÀÏ °æ¿ì »õ·Î¿î Á¢¼Ó ¿äûÀ» ¹ÞÀ¸¸é ±âÁ¸ÀÇ Spare Child Process¸¦ Æ÷Å©ÇÏ¿© »õ·Î¿î Child Process¸¦ ¸¸µé¾î³»¹Ç·Î ±âº»ÀûÀ¸·Î Spare Process°¡ ¸¹À»¼ö·Ï ÆøÁÖ¿¡ »¡¸® ´ëóÇÒ ¼ö ÀÖ´Ù. StartServer 20, MinSpareServer 20, MaxSpareServer 40À¸·Î Áõ°¡. 
¶ó. MaxRequestsPerChild 
À¥ ¼­¹ö ÇÁ·Î¼¼½º°¡ ÀÏÁ¤ Ƚ¼öÀÇ Å¬¶óÀ̾ðÆ® ¿äûÀ» ó¸®ÇÏ°í Á¾·áµÇ´Â ¼öÄ¡À̸ç, 1000À¸·Î Áõ°¡. 
¸¶. MaxClients 
µ¿½Ã¿¡ ½ÇÇàµÉ ¼ö ÀÖ´Â ÃÖ´ë ÇÁ·Î¼¼½º ¼ö¸¦ Á¦ÇÑÇÏ´Â °ÍÀ̸ç, ±âº» 256À¸·Î ¼³Á¤µÇ¾î ÀÖ´Ù. À̸¦ 512±îÁö Áõ°¡. 
¹Ù. ·Î±×ÆÄÀÏ »ý¼º 
ÀÌ¿ëÀÚ°¡ Á¢¼ÓÇÒ ¶§¸¶´Ù ±â·ÏµÇ´Â access_log ÆÄÀÏÀÇ °æ¿ì Çѹø Á¢¼Ó´ç ¾à 85¹ÙÀÌÆ®°¡ Áõ°¡Çϸç, Á¢¼Ó·®ÀÌ ¸¹À» °æ¿ì ÀÌ ÆÄÀÏÀÇ Å©±â´Â ½ÇÁ¦·Î ¾öû³ª´Ù. ÀÌ·² °æ¿ì Á¢¼Ó¶§¸¶´Ù ·Î±×ÆÄÀÏÀ» ¾×¼¼½ºÇϴµ¥ »ó´çÇÑ ½Ã°£°ú ºÎÇÏ°¡ °É¸®¹Ç·Î ·Î±× ÆÄÀÏÀ» ÀÏÁ¤½Ã°£¸¶´Ù ÃʱâÈ­ÇÏ¿© Ç×»ó °æ·®È­ ½ÃÄÑ ÁÙ ÇÊ¿ä°¡ ÀÖ´Ù. ¾ÆÆÄÄ¡¿¡¼­ Á¦°øÇÏ´Â rotatelog¸¦ ÀÌ¿ë. 


¤·Ä¿³Î ¼ÒÇÁÆ® ·¹º§ Æ©´× 

Ä¿³ÎÀÌ Á¦°øÇÏ´Â ÆĶó¸ÞÅÍ°ªÀ» /proc ÆÄÀÏ ½Ã½ºÅÛÀ» ÀÌ¿ëÇؼ­ ºÎÆÃÀÌ ¿Ï·áµÈ ½ÃÁ¡ÈÄ¿¡ º¯°æÇÑ´Ù. ¿©±â¼­´Â ÁÖ·Î ÆÄÀϽýºÅÛ°ú ³×Æ®¿÷ ÀÚ¿ø¿¡ °ü·ÃµÈ ³»¿ë¿¡ ´ëÇؼ­ Æ©´×ÇÑ´Ù. 

1) ÆÄÀÏ ½Ã½ºÅÛ °ü·Ã 
- ¸®´ª½º Ä¿³ÎÀÌ ÇÒ´çÇÒ ¼ö ÀÖ´Â ÆÄÀÏ °³¼öÀÇ ÃÖ´ë°ª : 4096 -> 32768 
- ¸®´ª½º Ä¿³ÎÀÌ ÇÒ´çÇÒ ¼ö ÀÖ´Â inode °³¼öÀÇ ÃÖ´ë°ª : 16384 -> 65536 
- root »ç¿ëÀÚ¿¡ ´ëÇØ ÇÒ´çÇÒ ¼ö ÀÖ´Â ÆÄÀÏ °³¼öÀÇ ÃÖ´ë°ª : 1024 -> 32768 
- ÇϳªÀÇ ÇÁ·Î¼¼½º°¡ ¿ÀÇÂÇÒ ¼ö ÀÖ´Â ÆÄÀÏÀÇ °³¼ö : 256 -> 512 

2) ³×Æ®¿÷ ÀÚ¿ø °ü·Ã 
- TCP °¡ Keep Alive ¸Þ½ÃÁö¸¦ º¸³»´Â ½Ã°£ °£°Ý : 7200 -> 1200 
- ¼ÒÄÏÀÌ Ç×»ó CLOSEµÇ±â Àü¿¡ ¸¶Áö¸· FIN À» ±â´Ù¸®´Â ½Ã°£ : 180 -> 30 
- ÇϳªÀÇ TCP Á¢¼Ó ¿äû¿¡ ´ëÇØ ÀÀ´äÀ» ÀçÀü¼ÛÇϴ Ƚ¼ö : 7 -> 2 

ÀÌ·¸°Ô ¼³Á¤µÇ´Â °ªµéÀº ½Ã½ºÅÛÀÌ ºÎÆõǸ鼭 ½ºÅ©¸³Æ®¸¦ ÅëÇØ ¼³Á¤µÇ¾î¾ß µÇ±â ¶§¹®¿¡ /etc/rc.d/rc.local ÆÄÀÏÀÇ ¸¶Áö¸· ºÎºÐ¿¡ Á¤ÀǵȴÙ. 

¤· Ä¿³Î ÇÏµå ·¹º§ Æ©´× 

Ä¿³Î ¼Ò½º¸¦ Á÷Á¢ ¼öÁ¤ÇÏ¿© Á¦ÇÑ°ªÀ» Á¶Á¤ÇÑ´Ù. À̸¦ À§Çؼ­´Â Ä¿³Î ÄÄÆÄÀÏÀÌ ÇʼöÀûÀ̸ç, Á¶½É½º·± Á¢±ÙÀÌ ÇÊ¿äÇÏ´Ù. 

- ÆÄÀÏ ¿ÀÇÂ °³¼ö 
- ó¸®ÇÒ ¼ö ÀÖ´Â ÇÁ·Î¼¼½º °³¼ö 




**Âü°í 


1. ¾ÆÆÄÄ¡ À¥ ¼­¹ö Æ©´× 
- apache/src/include/httpd.h: 
HARD_SERVER_LIMIT 256 -> 1280 
- apache/conf/httpd.conf: 
MaxKeepAliveRequests 100 -> 10000 
KeepAliveTimeout 15 -> 30 
MinSpareServers 5 -> 20 
MaxSpareServers 10 -> 40 
StartServers 5 -> 20 
MaxClients 256 -> 1024 

2. Ä¿³Î ¼ÒÇÁÆ® ·¹º§ Æ©´× 
- ulimit -n 32768 
- /proc/sys/fs/file-max: 4096 -> 32768 
- /proc/sys/fs/inode-max: 16384 -> 65536 
- /proc/sys/net/ipv4/tcp_keepalive_time: 7200 -> 1200 
- /proc/sys/net/ipv4/tcp_fin_timeout: 180 -> 30 
- /proc/sys/net/ipv4/tcp_sack: 1 -> 0 
- /proc/sys/net/ipv4/tcp_timestamps: 1 -> 0 
- /proc/sys/net/ipv4/tcp_syncookies: 0 -> 1 
- /proc/sys/net/ipv4/tcp_retries1: 7 -> 2 
- /proc/sys/net/ipv4/tcp_max_syn_backlog: 128 -> 8192 
- /proc/sys/net/ipv4/tcp_window_scaling: 1-> 0 

3. Ä¿³Î ÇÏµå ·¹º§ Æ©´× 
- /usr/src/linux/include/linux/fs.h: 
NR_FILE 4096 -> 32768 
INR_OPEN 1024 -> 32767 
- /usr/src/linux/include/linux/tasks.h: 
NR_TASKS 2560 -> 3192 
MAX_TASKS_PER_USER 2048 -> 3192 
- /usr/src/linux/include/linux/limits.h: 
NR_OPEN 1024 -> 32767 
- /usr/src/linux/include/net/tcp.h: 
TCP_TIMEWAIT_LEN (60*HZ) -> (15*HZ)