Performance Tuning QuickGuide for BenchmarkTest
Document Version : 0.98-1 , 2001.09.11
Version History
First Version : 0.95, 2001.01.16
Version : 0.96, 2001.02.15
Version : 0.97, 2001.03.28
Version : 0.98, 2001.03.29
Version : 0.98-1, 2001.09.11
ƯÁ¤ Servlet/JSP/EJB ¾îÇø®ÄÉÀ̼ÇÀÌ ÃÖ»óÀÇ Performance ¸¦ ³»¾ßÇÏ´Â Benchmark Test
½ÃÇà½Ã¿¡ IBM WebSphere 3.5.x ¿¡¼ Àû¿ëÇØ¾ß ÇÏ´Â ÃÖÀûÀÇ ÆÄ¶ó¸ÞÅÍ °ªµéÀ» ã¾Æ³»´Â
¹æ¹ý ÀÔ´Ï´Ù.
ºñ·Ï, ¾ÕºÎºÐÀÇ Æ¯Á¤ ÆÄ¶ó¸ÞÅÍ´Â IBM WebSphere ¾îÇø®ÄÉÀ̼Ǽ¹ö ±â¹ÝÀÇ ¼öÄ¡ÀÌÁö¸¸,
ÀÎÅͳÝÀÇ Æ¯¼º°ú ¼º´É, ±×¸®°í, ÃÖÀûÀÇ ÆÄ¶ó¸ÞÅ͸¦ ã¾Æ°¡´Â °úÁ¤Àº À¥±â¹Ý ½Ã½ºÅÛÀ̶ó¸é
µ¿ÀÏÇÏ°Ô Àû¿ëµÇ´Â ¹æ¹ý·ÐÀûÀÎ ¹®Á¦ÀÔ´Ï´Ù.
¸ÕÀú ¿ë¾î¿¡ ´ëÇÑ Á¤ÀǺÎÅÍ Á¤ÇϰíÀÚ ÇÕ´Ï´Ù.
µ¿½Ã»ç¿ëÀÚ/Concurrent Users/Concurrent Clients :
ÇöÀç ÇØ´ç ½Ã½ºÅÛÀ» »ç¿ëÇϱâ À§ÇÑ ¸ñÀûÀ¸·Î Çѹø ÀÌ»ó È£ÃâÀ» Ç߰ųª, Çϰí ÀÖ´Â,
¸ð´ÏÅÍ ¾Õ¿¡ ÀÖ´Â »ç¿ëÀÚµéÀ̸ç "Active Clients" ¿Í "Inactive Clients" ¸¦ ÇÕÇÑ
»ç¿ëÀÚÀÌ´Ù.
Active Clients/Active Reuqests/Active Threads :
ÇöÀç Request ¸¦ ¼öÇàÇÏ¿© ¾ÆÁ÷ ÀÀ´äÀ» ¹ÞÁö ¸øÇÑ »ç¿ëÀÚ È¤Àº ¼öÇàÁßÀÎ
¼ºñ½ºÀÇ °¹¼ö
Inactive Clients :
ÇöÀç Requset ¸¦ ¼öÇàÇÏÁö ¾Ê°í ÀÖÀ¸¸ç, ȸéÀÇ °á°ú¸¦ º¸°í Àְųª ´ÙÀ½ ¹öưÀ»
´©¸£±â Àü±îÁöÀÇ »ç¿ëÀÚ.
ÀϺΠ¹®¼¿¡¼´Â "µ¿½Ã»ç¿ëÀÚ(Concurrent Users)"ÀÇ Á¤ÀǸ¦, À§¿¡¼ Á¤ÀÇÇÑ "Active
Clients" ¸¦ ÁöĪÇÏ´Â °ÍÀ¸·Î ¸¹ÀÌµé »ç¿ëÇÕ´Ï´Ù. L4 ½ºÀ§Äª ÀåºñÀÇ Active session°³¼ö
¶óµç°¡, 80 port ESTABLISH·Î ¹°·Á ÀÖ´Â "netstat -n"¼öÄ¡¶óµç°¡, ȤÀº Application
ServerÀÇ ¼öÇàÁßÀÎ ThreadÀÇ °¹¼ö¶óµç°¡... ±×·¯³ª, ÀÌ·¸°Ô Á¤ÀÇÇÒ °æ¿ì,
ºñÁî´ÏÀûÀÎ Áß¿äÇÑ ºÎºÐÀ» »ó½ÇÇÏ°Ô µË´Ï´Ù. ¿¹¸¦ µé¾î, ÇöÀç ½ÇÇàµÇ°í ÀÖ´Â ¼ºñ½ºÀÇ
°¹¼ö´Â ÇØ´çÀÀ¿ë¾îÇø®ÄÉÀ̼ÇÀÇ ÀÀ´ä½Ã°£ÀÌ ´À¸± ¼ö·Ï ³ô°Ô ³ªÅ¸³ª¸ç, ÀÀ´ä½Ã°£ÀÌ
¸Å¿ì ºü¸¥ ¼ºñ½ºÀÇ °æ¿ì, ±ØÈ÷ ³·°Ô ³ªÅ¸³³´Ï´Ù. ¼ø½Ä°£¿¡ ³¡³ª¹ö¸®´Ï ½ÇÁ¦ ¼ºñ½ºÇÏ´Â
°¹¼ö´Â ³·°Ô º¸ÀÌ´Â °ÍÀÌÁö¿ä. ¿¹¸¦ µé¾î, ¾îÁ¦´Â Active Clients ¼öÄ¡°¡ ¹«Ã´
³ô¾Ò¾ú´Âµ¥, ¾îÁ¬¹ã ¿½ÉÈ÷ ¾îÇø®ÄÉÀ̼ÇÀ» ¼öÁ¤ÇÏ¿© ÀÀ´ä¼Óµµ¸¦ °³¼±ÇÏ°í ¿À´Ã ÃøÁ¤ÇÏ´Ï
Active Clients ´Â ¸Å¿ì ³·°Ô ³ªÅ¸³µ½À´Ï´Ù. ¸¸¾à, À̰°Àº »óȲÀ» µÎ°í, ¸Å´ÏÁ®¿¡°Ô
"¾îÁ¦´Â 'µ¿½Ã»ç¿ëÀÚ'°¡ 100 À̾ú´Âµ¥, ¿À´ÃÀº 10 ÀÔ´Ï´Ù." ¶ó°í Çϸé, ¸Å´ÏÁ®´Â
"¿Ö ¾îÁ¦º¸´Ù ¿À´Ã »ç¿ëÀÚ°¡ Àû°Ô µé¾î¿ÔÁö?" ¶ó°í ¿ÀÇØ¸¦ ÇÑ´Ù´Â °ÍÀÌÁÒ. ½ÇÁ¦ ¾îÁ¦³ª
¿À´ÃÀ̳ª ÀÌ ½Ã½ºÅÛ¿¡ µé¾î¿Í¼ »ç¿ëÇÑ ºóµµ´Â µ¿ÀÏÇßÀ½¿¡µµ ºÒ±¸ÇÏ°í ¸»ÀÔ´Ï´Ù.
µû¶ó¼, ÀÌ ¹®¼¿¡¼´Â "µ¿½Ã»ç¿ëÀÚ(Concurrent Users)"¿Í "Active Clients", ±×¸®°í
"Inactive Clients"¸¦ ±¸ºÐÇÏ¿© »ç¿ëÇϰڽÀ´Ï´Ù.
¹°·Ð Á¤ÀÇ¿¡ ÇãÁ¡Àº ÀÖ½À´Ï´Ù. Active Clients ´Â ¸íÈ®Çѵ¥, Inactive Clients ÀÇ °æ¿ì
¾îµð±îÁö¸¦ Æ÷ÇÔÇØ¾ß ÇÏ´À³ÄÀÇ ¹®Á¦°¡ ÀÖ½À´Ï´Ù. È£Ãâ¿¡ µû¸¥ ÀÀ´äÀ» ¸· º¸°í ÀÖ´Â
»ç¿ëÀÚÀÇ °æ¿ì´Â ºÐ¸íÇϰÚÁö¸¸, ȸéÀ» º¸¸é¼ Ä¿ÇǸ¦ ¸¶½Ã´Â »ç¶÷, ÈÀå½Ç¿¡ Àá±ñ
°£ »ç¶÷, ÄÄÇ»Å͸¦ Äѵΰí Áý¿¡ °¡ ¹ö¸° »ç¶÷ µî, ±× ¹üÀ§°¡ ¾Ö¸Å ÇÕ´Ï´Ù.
Inactive Clients ÀÇ Á¤ÀÇ¿¡ µû¸¥ "µ¿½Ã»ç¿ëÀÚ"ÀÇ Á¤ÀÇ ¿ª½Ã ¸¶Âù°¡Áö·Î ¾Ö¸ÅÇØ Áý´Ï´Ù.
±×·¯³ª, ½Ã½ºÅÛÀÇ °üÁ¡¿¡¼´Â "Active Clients"°¡ ÀÇ¹Ì ÀÖÁö¸¸, ºñÁî´Ï½ºÀûÀÎ Ãø¸é¿¡¼´Â
À§ Á¤ÀÇ¿¡ µû¸¥ "µ¿½Ã»ç¿ëÀÚ"ÀÇ °³³äÀº ´ë´ÜÈ÷ Áß¿äÇÕ´Ï´Ù.
1. Basic Setting
1ÀåÀÇ Basic Setting Àº IBM WebSphere ±â¹ÝÀÇ °¢Á¾ Æ©´× ÆÄ¶ó¸ÞÅÍ ¼³Á¤¿¡ °ü·ÃÇÑ
ºÎºÐÀÔ´Ï´Ù.
IBM WebSphere ¾îÇø®ÄÉÀ̼Ǽ¹ö¿Í °ü½É/°ü·ÃÀÌ ¾ø´Â ºÐÀº °ð¹Ù·Î "2. Tuning Approach
Methodology" ºÎºÐÀ¸·Î °¡½Ê½Ã¿ä.
1.1 IBM HTTP Server(httpd.conf)
- MaxClients (ThreadsPerChild) : (discussed later)
- Timeout 600 (default 300)
( ÃæºÐÇÑ ¼öÄ¡·Î Àâ´Â ÀÌÀ¯´Â 300(5ºÐ)µµ ÃæºÐÈ÷ Å©Áö¸¸, µ¿½Ã»ç¿ëÀÚ°¡ Áõ°¡ÇÔ¿¡
µû¸¥ ÃÖ´ë Response Time º¸´Ù Å« ¼öÄ¡·Î ÀûÀýÈ÷ ¸ÂÃã, BMT(BenchMarkTest)ȯ°æ¿¡¼´Â
½Ã°£ÀÌ ¿À·¡°É·Áµµ ÀÀ´äÀº ¿Í¾ßÇÕ´Ï´Ù.)
- CustomLog ´Â ÃÖ¼ÒÈ : ºÒÇÊ¿äÇÑ Trace ·Î±ë(logging)Àº °¡±ÞÀû ÀÚÁ¦ÇÕ´Ï´Ù.
1.2 IBM Websphere Application Server
1.2.1 Web Server Configuration Reload Interval
[<websphere_root>/properties/bootstrap.properties]
ose.refresh.interval=20000
1.2.2 Initial Parameters
-Xms512m -Xmx512m -noclassgc ( -noasyncgc on solaris ) \
-Djavax.rmi.CORBA.UtilClass=com.ibm.CORBA.iiop.Util \
-Dcom.ibm.CORBA.iiop.noLocalCopies=true \
-Dcom.ibm.ejs.dbm.PrepStmtCacheSize=200 \
-Dfile.encoding=KSC5601 \
-Ddefault.client.encoding=KSC5601
NOTE: ms, mx °ªÀº CPUÀÇ °¹¼ö¿Í MEMÅ©±â¿¡ µû¶ó ÀûÀýÈ÷ Á¶Á¤ÇÕ´Ï´Ù.
NOTE : com.ibm.ejs.dbm.PrepStmtCacheSize =
{¼·Î´Ù¸¥ PreparedStatement ÀÇ °¹¼ö} X
{BMT½Ã DB Connection ¿¬°á¼ö or # of MaxConnection}
default : 10
JIT compiler °¡ "enabled" µÇµµ·Ï Default·Î »ç¿ë
Q: SUN JVM Heap Setting
-Xgenconfig:64m,64m,semispaces:128,512m,markcompact
1.2.3 Servlet Engine
node --> AppServer --> ServletEngine --> ¿À¸¥ÂÊ "ÀϹÝ" : Ãִ뿬°á¼ö
Ãִ뿬°á¼ö(OSE Max Connection) : (discussed later)
1.2.4 WebApplication
- WebApplication AutoReload = false (default is "true")
- JSP Reload Interval
JSP 1.x Preprocessor --> Advansed --> Init Parameters ¿¡ Ãß°¡
minTimeBetweenStat : 7200000(2½Ã°£) (default 1000 ms)
(NOTE: ÀÌ·¸°Ô ÇÒ °æ¿ì, JSP¸¦ º¯°æÇÏ´õ¶ó°í °ð¹Ù·Î º¯°æµÇÁö ¾Ê½À´Ï´Ù)
- ¸¸¾à, EJB Container ¸¦ »ç¿ëÄ¡ ¾Ê´Â´Ù¸é °ü¸®Äֿܼ¡¼ ¹Ýµå½Ã Áö¿ì½Ê½Ã¿ä.
- ¼³Ä¡½Ã »ý¼ºµÈ Default Server ¸¦ ±×´ë·Î »ç¿ëÄ¡ ¸»°í, Áö¿îÈÄ »õ·Î app server ¸¦
À籸¼ºÇϽʽÿä(!). Default Server¿¡´Â ºÒÇÊ¿äÇÑ samples,admin µîÀÇ WebAppliation
ÀÌ ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù.
- File Servlet ÀÌ ÀÖ´Ù¸é ¹Ýµå½Ã Áö¿ì½Ê½Ã¿ä(IHS °¡ html/image ¸¦ ó¸®Åä·Ï)
- ¸¸¾à, Servlet ÀÌ BMT¿¡¼ »ç¿ëµÈ´Ù¸é, ¹Ýµå½Ã Alias ¸¦ µî·ÏÇÏ¿© »ç¿ëÅä·Ï Çϰí,
invoker Servlet À» ÀÌ¿ëÇÏ¿© ClassName ·Î Á¢±ÙÄ¡ ¾Êµµ·Ï ÇϽʽÿä. ¾à°£ÀÇ
¼º´ÉÀúÇϸ¦ ¾ß±âÇÕ´Ï´Ù.
1.2.5 SessionManager
Servlet Engine:Session Manager:Intervals:Invalidate Time: 600 seconds (default 1800)
SessionMgr:Session Manager:Tuning:Using Cache=Yes (default is No)
JSP ¿¡¼ HttpSession À» »ç¿ëÄ¡ ¾Ê´Â´Ù¸é, ¼Ò½º¿¡¼ ¹Ýµå½Ã ¾Æ·¡ ¶óÀÎÀ» Ãß°¡ÇϽʽÿä
<%@ page session="false" %>
NOTE: DO NOT use Sesssion persistence feature !!
"Websphere 3.5.2 HTTP Session Persistence 17% performance degradation
for Trade2JDBC on Solaris when persistent session is used."
1.2.6 JSP Buffering
´ë·®ÀÇ ¿äû¿¡ ´ëÇØ ¸Þ¸ð¸®¸¦ ÀÛ°Ô »ç¿ëÇϱâ À§ÇØ, ·ÎÁ÷»óÀÇ ¹®Á¦¸¸ ¾ø´Ù¸é,
¾Æ·¡ ¶óÀÎÀ» ÅëÇØ JSP buffering À» ÇÏÁö ¾Êµµ·Ï ¼³Á¤ ÇϽʽÿä
<%@ page buffer="none" %>
1.2.7 JDBC DataSource
Data Source:YourDataSource:Minimum connection pool size: 1 (default)
Data Source:YourDataSource:Maximum connection pool size: 20-40 (discussed later)
Data Source:YourDataSource:Connection timeout: 300 (default)
Data Source:YourDataSource:Idle timeout: 1800 (default)
Data Source:YourDataSource:Orphan timeout: 1800 (default)
NOTE: ½Ç¿î¿µÈ¯°æ¿¡¼´Â °¡¿ëÇÑ Connection ÀÌ ¾øÀ» °æ¿ì, ¸¶³É ±â´Ù¸®°Ô Çϸé
ÀüüÀûÀÎ ½Ã½ºÅÛÀÇ hang Çö»óÀ» ÃÊ·¡ÇÒ ¼öµµ ÀÖÀ¸³ª, BMTȯ°æ¿¡¼´Â ÀÀ´äÀÌ ´Ê°Ô
°É¸®´õ¶óµµ DB ÀÛ¾÷Àº ÀÌ·ç¾îÁ®¾ß ÇÕ´Ï´Ù. µû¶ó¼, connection timeout °ªÀº
defualt °ªÀÎ 300(5ºÐ)À» ±×´ë·Î À¯ÁöÇÕ´Ï´Ù. (½Ç¿î¿µÈ¯°æ¿¡¼´Â ÀÌ ¼öÄ¡¸¦ 2-3(ÃÊ)·Î
±ÇÀåÇÕ´Ï´Ù.)
1.3. UDB DB2 DataBase
Use JDBC Driver Type 2 App Driver
Application Heap Size = 256M (default 128M)
MaxAppls = (# of connections set for Data Source + # of connections in session mgr)
x ( # of clones)
(default is 40)
Buffpage = 2 x MaxAppls (minimum setting)
MaxAgents = sumation of MaxAppls for all databases
NOTE: DB2 on Local AIX, TCP/IP cataloging
1.4 etc.
4 CPU ±îÁö´Â ¾îÂ÷ÇÇ CPU¸¦ 100% ±îÁö »ç¿ëÇϱ⠶§¹®¿¡ cloning ÀÇ È¿°ú°¡ ¾øÀ¸¸ç
ÇϳªÀÇ JVMÀ¸·Î ÃÖÀûÀÇ ¼º´ÉÀ» ³¾ ¼ö ÀÖ½À´Ï´Ù.
2. Tuning Approach Methodology
2.1 Tuning Basic Issue
¾Æ·¡ [±×¸²1]°ú °°ÀÌ "ºê¶ó¿ìÁ®", "¾îÇø®ÄÉÀ̼Ǽ¹ö", ±×¸®°í "DB or Legacy tier",
ÀÌ·¸°Ô 3°³ÀÇ tier °¡ ÀÖ´Ù°í °¡Á¤ÇØ º¸°Ú½À´Ï´Ù.
[±×¸²1]
¾Æ·¡´Â ºê¶ó¿ìÁ® ´Ü¿¡¼ ÃøÁ¤ÇÑ, ƯÁ¤ H/Wȯ°æ¿¡¼ ƯÁ¤ ¾îÇø®ÄÉÀ̼ÇÀÇ Active
Clients Áõ°¡¿¡ µû¸¥ "Æò±ÕÀÀ´ä½Ã°£"ÀÇ ±×·¡ÇÁÀÔ´Ï´Ù.[±×¸²2]
[±×¸²2]
µ¿½Ã»ç¿ëÀÚ(Concurrent Users)°¡ Áõ°¡Çϸé Active Clients µµ ±×¿¡ µû¶ó Áõ°¡Çϰí,
ÀϹÝÀûÀ¸·Î ƯÁ¤ ½ÃÁ¡±îÁö´Â Æò±ÕÀÀ´ä½Ã°£Àº ÀÏÁ¤ÇÑ °ªÀ» À¯ÁöÇÏ´Ù°¡ ±× ÀÌÈĺÎÅÍ´Â
linear ÇÑ Áõ°¡¸¦ º¸ÀÔ´Ï´Ù.[±×¸²3]
[±×¸²3]
¿©±â¼ TPS(Transaction Per Second)¶ó´Â ¿ë¾î¸¦ Çϳª Á¤ÀÇÇÏ°í ³Ñ¾î°¡°Ú½À´Ï´Ù.
[±×¸²1]¿¡¼ "ºê¶ó¿ìÁ®", "¾îÇø®ÄÉÀ̼Ǽ¹ö", ±×¸®°í "DB or Legacy tier" °¡ ÀÖÀ»¶§
ºê¶ó¿ìÁ® ´Ü¿¡¼ ÃøÁ¤ÇÑ 1ÃÊ´ç ÀÀ´äȽ¼ö¸¦ TPS(Trnasaction Per Second) ¶ó ºÎ¸£°Ú½À´Ï´Ù.
»ç½Ç "Transaction" À̶õ ¿ë¾î´Â ¼·Î´Ù¸¥ ¶æÀ¸·Î IT¿¡¼ ±¤¹üÀ§ÇÏ°Ô »ç¿ëÇÕ´Ï´Ù. ÀÌ
¹®¼¿¡¼´Â Transaction Per Second º¸´Ù´Â RPS(Response Per Second), ȤÀº
PPS(Page Per Second) ÀÇ Àǹ̰¡ °ÇÕ´Ï´Ù.
ÀÌ·¸°Ô Á¤ÀÇµÈ TPS´Â Active Clients °¡ Áõ°¡ÇÔ¿¡ µû¶ó ÇÔ²² Áõ°¡ÇÏ´Ù°¡, ÀÏÁ¤½ÃÁ¡ºÎÅÍ´Â
´õÀÌ»ó Áõ°¡ÇÏÁö ¾Ê½À´Ï´Ù. ¿ÀÈ÷·Á, °úµµÇÑ Active Clients ¿¡ ´ëÇØ¼´Â ¿ÀÈ÷·Á TPS´Â
°¨¼ÒÇÏ´Â °á°ú¸¦ ¾ß±âÇÕ´Ï´Ù.[±×¸²4]
[±×¸²4]
¾î·°Å³ª, ÇØ´ç ¾îÇø®ÄÉÀÌ¼Ç È¤Àº, ¾îÇø®ÄÉÀ̼Ǽ¹öÀÇ "¼º´É(Performance)"¸¦ À̾߱â
ÇÒ ¶§, "Æò±ÕÀÀ´ä½Ã°£ÀÌ 0.5 ÃÊ¿´´Ù, ȤÀº 1.7 ÃÊ¿´´Ù" ¶ó´Â °ÍÀº "ƯÁ¤ H/W, ƯÁ¤
Active Clients °¡ ¾ó¸¶ÀÏ ¶§ ±×·¯Çß´Ù"¶ó´Â Á¶°ÇÀÌ ºÙ¾î¾ß ÇÕ´Ï´Ù.
¹Ý¸é, TPS ¿¡´Â Active Clients °¡ ¾ó¸¶À̵ç, 1ÃÊ´ç ó¸®ÇÒ ¼ö Àִ Ƚ¼ö´Â Active
Clients ÀÇ ÀÏÁ¤±¸°£¿¡¼ ÀÏÁ¤ÇÏ°Ô µÇ°í, ±× ¼öÄ¡¸¦ ³Ñ¾î¼Áö ¾Ê½À´Ï´Ù.
µû¶ó¼, "¼º´É"À» À̾߱âÇÒ ¶§, "Æò±ÕÀÀ´ä½Ã°£" º¸´Ù´Â "TPS" ¸¦ ³õ°í ¾ê±âÇÏ´Â °ÍÀÌ
º¸´Ù ¹Ù¶÷Á÷ÇÒ °ÍÀÔ´Ï´Ù.
±×¸®°í, "Æò±ÕÀÀ´ä½Ã°£"Àº ƯÁ¤ ÇϳªÀÇ ¼öÄ¡¸¦ °®°í ¾ê±âÇØ¼´Â ¾ÈµÇ¸ç, Active Clients
ÀÇ Áõ°¡¿¡ µû¸¥ ÀüüÀûÀÎ ±×·¡ÇÁ¸¦ ³õ°í À̾߱âÇØ¾ß¸¸ Àǹ̸¦ °¡Áý´Ï´Ù.
¼º´ÉÃøÁ¤À» À§ÇÑ Benchmark Test¸¦ ½ÃÇàÇÒ ¶§, ´ëºÎºÐÀÇ °æ¿ì, ¾Æ·¡ÀÇ µÎ°¡Áö Ç׸ñÀÌ
°í·ÁµÇ¾î¾ß ÇÕ´Ï´Ù.
Áï,ù° TPS(´ÜÀ§½Ã°£´ç ÃÖ´ë󸮰Ǽö)¸¦ ±¸ÇÏ´Â °ÍÀÌÁö¿ä. ÀÌ´Â 1ÃÊ´ç, ȤÀº 1ºÐ´ç
ÃÖ´ë ó¸®ÇÒ ¼ö ÀÖ´Â °Ç¼ö¸¦ ±¸ÇÏ´Â °úÁ¤À¸·Î Active Client ¸¦ Áö¼ÓÀûÀ¸·Î
Áõ°¡½ÃŰ¸ç ±×¿¡ µû¸¥ ´ÜÀ§½Ã°£´ç 󸮰ǼöÀÇ ±×·¡ÇÁ¸¦ ±¸ÇÏ¿© ±×·¡ÇÁÀÇ ÃÖ´ëÄ¡¸¦
È®ÀÎÇÏ´Â °ÍÀÔ´Ï´Ù.
µÑ°, ºñÁî´Ï½ºÀû ¿ä°Ç»ó Çã¿ë°¡´ÉÇÑ ÃÖ´ëÀÀ´ä½Ã°£À» ¼³Á¤Çϰí, Active Client ¸¦
Áõ°¡½ÃŰ¸ç ºÎÇÏ·®À» Áö¼ÓÀûÀ¸·Î ³ô¿´À» ¶§, Active Client ¿¡ µû¸¥ Æò±ÕÀÀ´ä½Ã°£ÀÇ
±×·¡ÇÁ¸¦ ±¸Çϰí, ±× Æò±ÕÀÀ´ä½Ã°£ÀÇ º¯È·®ÀÌ Çã¿ë°¡´ÉÇÑ ¹üÀ§¿¡ ¼ÓÇÏ´Â Áö¸¦
È®ÀÎÇÏ´Â °ÍÀÔ´Ï´Ù.
¼º´ÉÃøÁ¤À̶ó´Â °ÍÀº ¾î¶² Tool À» »ç¿ëÇϵç, °á±¹ À§ÀÇ 2°¡Áö »çÇ×À» È®ÀÎÇÏ´Â °úÁ¤ÀÌ
µÉ °ÍÀÔ´Ï´Ù.
±× ÀÌ¿ÜÀÇ °ÍÀº ºÎ¼öÀûÀÎ ¸ð´ÏÅ͸µ °üÁ¡ÀÏ »ÓÀ̸ç, ´ëÇ¥ÀûÀÎ ¿¹°¡, CPU»ç¿ë·®,
¸Þ¸ð¸® »ç¿ë·®, I/O·®, N/W »ç¿ë·® µîÀÌ µÉ °ÍÀÔ´Ï´Ù.
±Ã±ØÀûÀ¸·Î "Performance Testing" ÀÇ ±Ùº»ÀûÀÎ ¸ñÀûÀÌ "Performance Tuning"À»
À§ÇÑ °ÍÀ̹ǷÎ, °¢ °üÁ¡¿¡¼ÀÇ ¸ð´ÏÅ͸µ °á°ú¸¦ Åä´ë·Î bottleneck ÀÇ Point¸¦
ã¾Æ³»°í, °³¼±ÇÔÀ¸·Î½á, Performance Tuning À» ÇÏ°Ô µÇ´Â °ÍÀÌÁö¿ä.
°£È¤, Àϰ¢¿¡¼´Â BMT¸¦ ½ÃÇàÇÒ ¶§, CPU»ç¿ë·®°ú MEM»ç¿ë·®À» ¼º´ÉÃøÁ¤ÀÇ ÇÑ Ç׸ñÀ¸·Î
¼±ÅÃÇϱ⵵ ÇÕ´Ï´Ù. ±×·¯³ª, À̰ÍÀº ¾îµð±îÁö³ª ÂüÁ¶ÀÚ·áÀÌÁö, ¼º´Éºñ±³¸¦ À§ÇÑ ÀÚ·á°¡
µÇ¾î¼´Â ¾ÊµË´Ï´Ù. ÀÌ´Â ¸¶Ä¡ ¿©·¯¸íÀÇ Ã౸¼±¼öµéÀÌ °æ±â¸¦ ÇÒ ¶§, ¾î¶² ¼±¼ö°¡ °¡Àå
¸¹ÀÌ °ñÀ» ȹµæÇÏ´À³Ä º¸´Ù´Â ¾î¶² ¼±¼ö°¡ ¶¡À» ¸¹ÀÌ È긮Áö ¾Ê´À³Ä¸¦ °¡Áö°í ±× ¼±¼ö¸¦
Æò°¡ÇÏ·Á´Â °Í°ú µ¿ÀÏÇÕ´Ï´Ù. ȤÀÚ´Â µ¿ÀÏÇÑ ¼º´ÉÀ» ³ªÅ¸³¾ ¶§, ÀÌ¿ÕÀ̸é CPU³ª
¸Þ¸ð¸®¸¦ Àû°Ô »ç¿ëÇÏ´Â ½Ã½ºÅÛÀ» ¼±ÅÃÇÏ·Á ÇßÀ» Áöµµ ¸ð¸£°Ú½À´Ï´Ù. ±×·¯³ª, ´ëºÎºÐÀÇ
Ã౸°æ±â°á°ú°¡ ±×·¯ÇÏµí ºñ±â´Â °æ¿ì´Â »ó´ëÀûÀ¸·Î ¸Å¿ì µå¹®Çö»óÀ̸ç, ¼³·É µ¿ÀÏÇÑ
TPS°á°ú¸¦ º¸¿´´õ¶óµµ, CPU³ª MEM»ç¿ë·®ÀÌ ³·´Ù´Â °ÍÀº ¹º°¡ Á»´õ Æ©´×À» ÅëÇØ ¼º´ÉÀ»
³ôÀÏ ¼ö ÀÖ¾ú°Å³ª ´Ù¸¥ ¿ÜÀû ºÎºÐ¿¡ ÀÇÇÑ bottleneck À̾ú°Ú±¸³ª Á¤µµ·Î ¹Þ¾Æµé¿©¾ßÁö
À̸¦ ¸¶Ä¡ 2Â÷ ¼º´ÉÃøÁ¤ Ç׸ñÀ¸·Î ¼±ÅÃÇÏ´Â °ÍÀº Ã౸°æ±â°¡ ºñ°åÀ» ¶§, ¾î´À ÆÀÀÌ
¶¡À» Àû°Ô Èê·È´À³Ä·Î ¿ì½ÂÀ» °¡¸®´Â ²ÃÀÌ µÇ°í ¸¿´Ï´Ù.
2.2 Actual Tuning Methodology
2.2.1 °ü·ÃµÈ ¸ðµç ¼öÄ¡(MaxClients:300,OSE:300)¸¦ ÃÖ´ëÇÑ ³ôÀÎ ÈÄ, AKstress ToolÀ»
ÀÌ¿ëÇÏ¿© Á¡Â÷ÀûÀ¸·Î Active Clients ¼ö(Threads #)¸¦ Áõ°¡½ÃŰ¸ç ºÎÇϸ¦ ÁÖ°í,
±× °á°ú¸¦ ¾Æ·¡¿Í °°Àº ±×·¡ÇÁ(Throughput Curve)·Î ±×¸®½Ê½Ã¿ä
[±×¸²5] AKtools ÀÇ °á°ú·Î ³ª¿Â PPS(Page Per Second): 1ÃÊ¿¡ ¼öÇàÇÑ È½¼ö
2.2.2 Saturation Point ¿Í buckle zone À» ãÀ¸½Ê½Ã¿ä
Saturation point
- CPU°¡ 100% °¡ µÇ´Â ½ÃÁ¡.
- TPS °¡ ÃÖ´ë°¡ µÇ´Â ½ÃÀÛ ½ÃÁ¡.
Buckle zone
- TPS °¡ CPUÀÇ °æÇÕÀ¸·Î ÀÎÇØ ¿ÀÈ÷·Á ¶³¾îÁö´Â ±¸°£
[±×¸²6]
µÎ °ªÀ» ãÀ» ¼ö ÀÖÀ» ¶§±îÁö ÃæºÐÇÑ ¼öÄ¡(MaxClients,OSE)¿¡¼ µ¿½Ã Thread ±¸°£À»
¿©·¯ ¹ø Å×½ºÆ®ÇÒ Çʿ䰡 ÀÖÀ» °ÍÀÔ´Ï´Ù.
2.2.3 °ü·ÃµÈ ¼öÄ¡¸¦ Saturation Point ¿¡ ¸ÂÃ߽ʽÿä
À§¿¡¼ Seturation Point °¡ ¹ß»ýÇÏ´Â ¿øÀÎÀÌ ¼ºí·¿¿£ÁøÀÇ Ã³¸®´É·Â»óÀÇ ¹®Á¦¶ó¸é
OSE¼öÄ¡°¡ Seturation Point ÀÇ ´ë»óÀÌ µÉ °ÍÀÔ´Ï´Ù.
±×·¯³ª, DataBase¸¦ »ç¿ëÇÒ °æ¿ì³ª, Legacy ½Ã½ºÅÛ°ú ¿¬µ¿ÇÏ´Â ±¸Á¶¶ó¸é, ¿ÀÈ÷·Á
ÀÌ¿Í °ü·ÃÇÑ ¼öÄ¡°¡ Seturation Point ¸¦ ¸¸µé¾î³½ ÁÖµÈ ¿äÀÎÀÌ µÉ °ÍÀÔ´Ï´Ù.
2.2.4 ´Ù½Ã µ¿½Ã thread ¼ö¸¦ Áõ°¡½Ã۸ç Á¡Â÷ÀûÀ¸·Î ºÎÇϸ¦ Áֽʽÿä
±×¸®°í, Ç×»ó ÃÖ´ëÄ¡ÀÇ TPS°¡ À¯ÁöµÇ´Â °Í°ú buckle zone ÀÌ »ç¶óÁ³À½À» È®ÀÎÇϽʽÿä
[±×¸²7]
NOTE: À§ °á°ú¿¡¼ º¸µí, ¸¸¾à, Ç×»ó Active Clients 50 ¿¡¼¸¸ Å×½ºÆ® Çß¾ú´Ù¸é,
Seturation Point À» ã¾Æ Æ©´×ÇÑ °Í°ú ÇÏÁö ¾ÊÀº °ÍÀÇ Â÷À̸¦ ´À³¢Áö ¸øÇßÀ»
°ÍÀ̰í, "¼º´É»óÀÇ º¯È°¡ ¾ø´Ù"¶ó°í ¿ÀÆÇÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. »ç½Ç»ó Â÷ÀÌ´Â
Active Clients °¡ ¸¹À» ¶§ Â÷À̰¡ ¹ß»ýÇßÀ¸´Ï±î¿ä...
NOTE: Backend ½Ã½ºÅÛ(CICS,Tmax,SNA HOST,Socket) °ú ¿¬µ¿½Ã¿¡µµ ¹Ýµå½Ã °¡´ÉÇÑ ÃÖ´ë
³ôÀº ¼öÄ¡·Î ¸¶Ãß¾î ³õÀº ÈÄ, Threads °¹¼ö¸¦ 10 ºÎÅÍ 500 ±îÁö 10¾¿ Áõ°¡½ÃÄÑ
TPS ¸¦ ±¸ÇØ¾ß ÇÕ´Ï´Ù.
NOTE: ƯÁ¤ H/W Ç÷¿Æû»ó¿¡¼ ƯÁ¤ ¾îÇø®ÄÉÀ̼ÇÀº °íÀ¯ÀÇ TPS°¡ Á¤ÇØÁ® ÀÖ½À´Ï´Ù.
´ÜÁö ãÁö ¸øÇßÀ» »ÓÀÔ´Ï´Ù. ±× ¼öÄ¡¸¦ ã¾Æ, Ç×»ó ±× ¼öÄ¡°¡ ³ª¿Àµµ·Ï ÇÏ´Â °ÍÀÌ
Æ©´×ÀÔ´Ï´Ù.(¹°·Ð ÇØ´ç ÇÁ·Î±×·¥ ·ÎÁ÷À» °íÃÄ ¼º´ÉÇâ»óÀ» °¡Á®¿À´Â °ÍÀÌ ´õ¿í
¿µÇâ·ÂÀÌ Å®´Ï´Ù.)
NOTE: ÀØÁö ¸»¾Æ¾ß ÇÒ »çÇ×Àº Seturation Point ¸¦ ãÀ¸·Á¸é µé¾î°¡´Â ¸ðµç Åë·Î¸¦
ÃÖ´ëÇÑ ¿¾îµÎ°í(MaxClients:300, OSE:300, DataSource:300, ȤÀº ±× ÀÌ»ó) Å×½ºÆ®°¡
¼öÇà µÇ¾î¾ß ÇÕ´Ï´Ù.
NOTE: °¢ ¾îÇø®ÄÉÀÌ¼Ç ¸¶´Ù ÃÖÀûÄ¡ÀÇ ÆÄ¶ó¸ÞÅÍ´Â ±× ¾îÇø®ÄÉÀ̼ÇÀÇ Æ¯¼º¿¡ µû¶ó
°¢±â ¼·Î ´Ù¸¨´Ï´Ù. Á¤¸» ±×·¸½À´Ï´Ù.
2.3. Application ¼º°Ý¿¡ µû¸¥ Ư¼º
2.3.1 dummy.jsp ¿Í °°ÀÌ ÀÀ´äÀÌ ¸Å¿ìºü¸£°í ³»ºÎ¿¡¼ º°·Î ÇÏ´Â ÀÏÀÌ ¾ø´Â ¾îÇø®ÄÉÀ̼Ç
- µ¿½Ã¿¡ ó¸®ÇÏ´Â MaxÁ¦ÇѼöÄ¡´Â 10-20 À¸·Î ¸Å¿ì ³·¾Æ Áú ¼ö ÀÖ½À´Ï´Ù.
- ¼öÄ¡¸¦ ¸Å¿ì ³·°Ô Á¦ÇѽÃÄÑ µÎ¾îµµ CPU »ç¿ëÀº 100 % ±îÁö ¼ø½Ä°£¿¡ ¿Ã¶ó°©´Ï´Ù.
¿Ö³Ä¸é, ´ëºÎºÐÀÇ ºÎÇÏ´Â ÇØ´ç ¾îÇø®ÄÉÀ̼ǿ¡ ÀÖ´Â °ÍÀÌ ¾Æ´Ï¶ó, ¿£ÁøÂÊ¿¡¼ÀÇ
Event󸮰¡ °ÅÀÇ Á¡À¯ÇÏ°Ô µË´Ï´Ù. ÀÀ´äÀÌ ºü¸¥ ¼ºñ½ºÀÎ ¸¸Å, CPU°¡ ÇÒÀϵµ ¸¹°í
¹ßºü¸£°Ô ¿òÁ÷¿©¾ß ÇÑ´Ù°í ¼³¸íÇÏ¸é µÉ±î¿ä...
ÀÀ´äÀÌ ¸Å¹« ºü¸£¹Ç·Î TPS ´Â ¸Å¿ì ³ô½À´Ï´Ù.
2.3.2 DB °ü·Ã ¾îÇø®ÄÉÀ̼Ç
- DB SQLÀÇ Query Á¤µµ¿¡ µû¶ó, DB¼¹ö¿Í WebSphere °¡ CPU»ç¿ë·®ÀÌ ´Þ¶óÁý´Ï´Ù.
À§ÀÇ "Tuning Approach Methodolody" ¿¡ µû¶ó DataSource Max ¼öÄ¡¿Í
WebSphere OSE Max #, IHS MaxClients # ¸¦ ã¾Æ³»¾ß ÇÕ´Ï´Ù.
- DB Query ½Ã°£ÀÌ ¸¹ÀÌ °É¸®´Â ¼ºñ½ºÀÏ °æ¿ì, Seturation Point ÀÇ ´ë»óÀº
DataSource ÀÇ max connection ºñÁßÀÌ ¼º´É»óÀÇ ¿µÇâÀ» ´õ¿í ¹Þ½À´Ï´Ù.
DB Server ÀÇ CPU/MEM »ç¿ë·®¿¡ µû¶ó Seturation Point ¸¦ ÀâµÇ, OSE ¼öÄ¡º¸´Ü
DataSource ÀÇ max connection ¿¡ °ü½ÉÀ» °¡Á®¾ß ÇÕ´Ï´Ù.
- DB Query °¡ simple ÇÒ ¼ö·Ï, DataSource ÀÇ max connection ¼öÄ¡´Â ³·¾ÆÁú ¼ö
ÀÖ´Ù. ÀÌ °æ¿ì, DataSource ÀÇ max connection º¸´Ü, WebSphere ÀÇ OSE¼öÄ¡°¡
¼º´É¿¡ ´õ¿í ¿µÇâÀ» ¹Þ½À´Ï´Ù.
NOTE: ÀûÁ¤ÇÑ ¼öÄ¡°¡ ¾î¶² °ÍÀÎÁö´Â ÇØ´ç ¾îÇø®ÄÉÀ̼ÇÀÇ Æ¯¼º°ú H/W¿¡ µû¶ó
´Þ¶ó Áý´Ï´Ù. ±×·¸±â ¶§¹®¿¡ ƯÁ¤ ¼öÄ¡¸¦ ÀÌ ¹®¼¿¡¼ Á¦½ÃÇÒ ¼ö´Â ¾ø½À´Ï´Ù.
2.3.3 Backend Access ¾îÇø®ÄÉÀ̼Ç
- CICS Transaction Gatewary for Java, WebT for Tmax, Socket, JNI µîÀ¸·Î Backend
¼ºñ½º¿Í ¿¬µ¿µÉ °æ¿ì, ´ëºÎºÐ Backend ½Ã½ºÅÛ¿¡¼ bottleneck ÀÌ ¹ß»ýÇϸç,
ÀüüÀûÀÎ TPS ´Â backend ÀÇ TPS ±× ÀÚü°¡ µË´Ï´Ù.
- Backend ½Ã½ºÅÛÀÇ buckle zone ÀÌ ¹ß»ýÇÏÁö ¾Ê´Â ÇÑ ¾Õ´Ü¿¡¼´Â ÃÖ´ëÇÑ
Backend ·Î ¸¹Àº ¼öÀÇ Request °¡ ½×À̵µ·Ï ÇØ¾ß ÇÕ´Ï´Ù.
µû¶ó¼, MaxClients, OSE ¼öÄ¡´Â ³ô¾Æ Áú ¼ö ÀÖÀ¸¸ç, ±×·³¿¡µµ ºÒ±¸Çϰí
WebSphere Machine ÀÇ CPU/MEM »ç¿ë·®Àº ±ØÈ÷ ³·À» °ÍÀÔ´Ï´Ù.
NOTE: BMTÀÇ È¯°æ¿¡¼´Â ¾Æ¹«¸® ÀÀ´ä½Ã°£ÀÌ ´À¸®´õ¶óµµ ÀÀ´äÀÌ ½ÇÆÐÇÏ¸é ¾ÈµË´Ï´Ù.
¹Ý¸é, ½Ç ¿î¿µÈ¯°æ¿¡¼´Â ÀÀ´äÀÌ ´À·ÁÁú °æ¿ì, ¸¶³É ±â´Ù¸± °ÍÀÌ ¾Æ´Ï¶ó, °¡¿ëÇÑ
ÀÚ¿ø(DataBase Conneciton, Legacy Socket Pool, etc..)ÀÌ ¾øÀ» °æ¿ì "½Ã½ºÅÛÀÌ
ÆøÁÖÁßÀÔ´Ï´Ù. ´ÙÀ½¿¡ ´Ù½Ã ÀÌ¿ëÇϼ¼¿ä"¿Í °°ÀÌ °ð¹Ù·Î È£ÃâÀ» ¹ÛÀ¸·Î ¹Ð¾î³»¾ß
ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ½Ã½ºÅÛÀº ±× ´ë·®ÀÇ È£ÃâÀ» ³¡±îÁö ¼öÇàÇϱâ À§ÇØ °è¼ÓÀûÀ¸·Î
Queue ¿¡ ½×¾Æ µÑ °ÍÀÔ´Ï´Ù. À̰ÍÀ» ÇØ°áÇÏ´Â ÇϳªÀÇ ¹æ¹ýÀÌ "Peek Point Control"
À̶ó ¸í¸íÇÑ ÇÁ·Î±×·¡¹Ö ±â¹ýÀÔ´Ï´Ù.
2.4 ¼ö¿ë°¡´ÉÇÑ Ãִ뵿½Ã»ç¿ëÀÚ(Maximum Concurrent Users)
2.4.1 TPS ¿¡ ±Ù°ÅÇÑ ÃÖ´ë µ¿½Ã»ç¿ëÀÚ
Active Clients Áõ°¡¿¡ µû¸¥ 1ÃÊ´ç ó¸®È½¼ö TPS¸¦ ÃøÁ¤ÇÑ [±×¸²7]¿¡¼, ÇØ´ç ¾îÇø®ÄÉ
À̼ÇÀÇ ÃÖ´ë TPS´Â 83.33 ³ª¿Ô½À´Ï´Ù.
¿¹¸¦ µé¾î, "ÇÑ »ç¿ëÀÚ´Â ÀÀ´ä½Ã°£ÀÌ ¾ó¸¶°¡ °É¸®µç 10Ãʰ£°ÝÀ¸·Î Çѹø¾¿ ¹«Á¶°Ç È£ÃâÀ»
ÇÑ´Ù"¶ó°í °¡Á¤ÇØ º¸¸é, ÇÑ»ç¶÷ÀÌ 10Ãʰ£°ÝÀ¸·Î È£ÃâÇÏ´Ï, 10»ç¶÷ÀÌ¸é ¼¹öÃø¿¡¼´Â
1ÃÊ¿¡ Çѹø²Ã·Î ¿äûÀÌ µé¾î¿Ã °ÍÀÔ´Ï´Ù. 100»ç¶÷À̸é 1ÃÊ¿¡ 10¹ø ²Ã·Î ¿äûÀÌ µé¾î¿Ã
°ÍÀÔ´Ï´Ù. 833 ¸íÀ̸é, ¼¹öÃø¿¡¼´Â 1ÃÊ¿¡ 83.3 °³ÀÇ È£ÃâÀÌ µé¾î¿À´Â Á¤µµÀÇ ºÎÇÏÀÏ
°ÍÀÔ´Ï´Ù.
¸¸¾à, 833 ¸í ÀÌ»óÀÌ µÇ¸é ¾î¶»°Ô µÇ°Ú½À´Ï±î? 1ÃÊ¿¡ 83.3 ȸ ÀÌ»óÀÇ ºóµµ·Î È£ÃâÀÌ
¹ß»ýÇÏ°Ô µÇ´Âµ¥, ÇØ´ç H/W, ÇØ´ç ¾îÇø®ÄÉÀ̼ÇÀº [±×¸²7]¿¡¼ ÃøÁ¤ÇÑ ¹Ù¿Í °°ÀÌ 1ÃÊ¿¡
ÃÖ´ë 83.3 ȸ ÀÌ»óÀº ó¸®ÇÏÁö ¸øÇÕ´Ï´Ù. ±×·¸°Ô µÇ¸é ÀϺΠÃʰúÇϴ ȣÃâµéÀº ÀÀ´äÁö¿¬ÀÌ
¹ß»ýÇÏ°Ô µÇ°í, ÀÀ´äÁö¿¬¿¡¼ ±×Ä¡´Â °ÍÀÌ ¾Æ´Ï¶ó, È£Ãâºóµµ¿Í 󸮴ɷÂÀÇ »ó°ü°ü°è¿¡¼
¹Ð¸®°Ô µÇ¹Ç·Î, ÀϺΠRequest ´Â Queue ¿¡ ½×ÀÌ°Ô µÇ°í, Queue ¿¡ ½×ÀÌ´Â ·®Àº °è¼ÓÀûÀ¸·Î
´Ã¾î³ª°Ô µË´Ï´Ù.
°á±¹, "10ÃÊ¿¡ Çѹø¾¿ ¹«Á¶°Ç È£ÃâÇÑ´Ù"¶õ °¡Á¤ÇÏ¿¡ ÇØ´ç ¾îÇø®ÄÉÀ̼ÇÀº ƯÁ¤ H/Wȯ°æ¿¡¼
833 ¸í ÀÌ»óÀº ¼ö¿ëÇÒ ¼ö ¾ø´Ù°í ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¹°·Ð À̰ÍÀº ºóµµ¿Í È®À²ÀÇ ¹®Á¦ÀÏ »ÓÀÔ´Ï´Ù. ƯÁ¤ ½ÃÁ¡¿¡ ¸ô¸± ¼öµµ ÀÖ°í, 1¸¸¸íÀÌ
Á¢¼ÓÇØ À־ ½ÇÁ¦ È£Ãâ·®Àº ÀÛÀ» ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ ±× "10ÃÊ"¶ó´Â °¡Á¤À» ¾î¶»°Ô
º¸ÀåÇϰڽÀ´Ï±î? ȸéÀÇ Content ÀÇ À§Ä¡¿Í Navigation ¹æ¹ý¿¡ µû¶ó ´Þ¶óÁú °ÍÀÔ´Ï´Ù.
±×·¯³ª, ±âÁ¸ Access ·Î±× ÀÚ·á°¡ ÀÖ´Ù¸é, ±× ÀڷḦ ±â¹ÝÀ¸·Î ƯÁ¤ ¾îÇø®ÄÉÀ̼ÇÀÇ
È£Ãâºóµµ¿Í ±× º¯È·® ÃßÀ̸¦ ¿¹»óÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶Ç, ÀϹݻç¿ëÀÚ¸¦ ¼±Á¤ÇÏ¿© ƯÁ¤
½Ã½ºÅÛ »ç¿ë¿¡ µû¸¥ È£ÃâÆÐÅϰú È£Ãâºóµµ¸¦ ¸ð´ÏÅ͸µÇϸé, ¾î´À Á¤µµ µ¿½Ã»ç¿ëÀÚÀÏ ¶§,
¾î´ÀÁ¤µµÀÇ ºÎÇϰ¡ ¹ß»ýÇϹǷÎ, ÇâÈÄ ¾î´À½ÃÁ¡¿¡ µÇ¸é Ãִ뵿½Ã»ç¿ëÀÚÀÇ ÇѰè½ÃÁ¡¿¡
µµ´ÞÇÒ °ÍÀΰ¡¸¦ ³ª¸§´ë·Î ¿¹ÃøÇÒ ¼ö ÀÖ´Ù°í º¾´Ï´Ù.
2.4.2 Æò±ÕÀÀ´ä½Ã°£(Mean Time)¿¡ ±Ù°ÅÇÑ Ãִ뵿½Ã»ç¿ëÀÚ
¾Õ¼± ±Û¿¡¼´Â TPS¿¡ ÀÇÇÑ Á÷°üÀûÀÎ Ãִ뵿½Ã»ç¿ëÀÚ¸¦ ±¸ÇØ º¸¾Ò½À´Ï´Ù. ¹Ý¸é Active
Clients Áõ°¡¿¡ µû¸¥ "Æò±ÕÀÀ´ä½Ã°£"ÀÇ ±×·¡ÇÁ¸¦ ±×·ÁµÎ¸é, ÇØ´ç ¾îÇø®ÄÉÀ̼ÇÀÌ ÃÖ´ë
¼ö¿ëÇÒ ¼ö ÀÖ´Â »ç¿ëÀÚ¸¦ ±¸°£º°·Î °è»êÇØ ³¾ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î Active Clients
Áõ°¡¿¡ µû¸¥ "Æò±ÕÀÀ´ä½Ã°£"ÀÇ ±×·¡ÇÁ°¡ ´ÙÀ½°ú °°´Ù°í °¡Á¤ÇϰڽÀ´Ï´Ù.
[±×¸²8] Ktools ÀÇ °á°ú Áß Active Thread # Áõ°¡¿¡ µû¸¥ Mean Time(Æò±ÕÀÀ´ä½Ã°£)
´ÙÀ½°ú °°Àº °ÍÀ» »ý°¢ÇØ º¸°Ú½À´Ï´Ù.
[±×¸²9]
À§¿¡¼, Active Clients 120 ÀÇ °æ¿ì¸¦ º¸¸é, "Ç×»ó 120 °³ÀÇ Request°¡ ¼¹öÃø¿¡¼
¼öÇàÇϰí ÀÖ´Â »óȲ" ÀÔ´Ï´Ù. ÀÌ Á¤µµÀÇ ºÎÇϰ¡ µé¾î¿À±â À§Çؼ ¸î¸íÀÇ »ç¿ëÀÚ°¡
ÀÖÀ¸¸é µÇ°Ú´À³Ä¸¦ ¿ª»êÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î "ÀÀ´ä½Ã°£ÀÌ ¾ó¸¶°¡ °É¸®µç, Ç×»ó
10 ÃÊ °£°ÝÀ¸·Î È£ÃâÇÑ´Ù"¶ó°í °¡Á¤Çϸé, ¸¸¾à ÀÌ·¯ÇÑ »ç¿ëÀÚ°¡ 120 ¸íÀÌ ÀÖ´Ù¸é
¼¹öÃø¿¡¼´Â ºÒ°ú 1.4ÃÊ ¹Û¿¡ "Active Clients 120" À» À¯ÁöÇÏÁö ¸øÇÕ´Ï´Ù. Ç×»ó
120 °³ÀÇ È£ÃâÀ» ¼¹öÃø¿¡¼ ¼öÇàÁßÀÎ »óȲÀÌ µÇ·Á¸é, 1.4 : 10 ÀÇ ºñÀ²¸¸ÅÀÌ ´õ
ÀÖ¾î¾ß¸¸ ÇÒ °ÍÀÔ´Ï´Ù.
µû¶ó¼, 120 x { 10,000 / 1,409 } = 852 ¸í Á¤µµ°¡ 10Ãʰ£°ÝÀ¸·Î Áö¼ÓÀûÀ¸·Î È£ÃâÇÒ
¶§, ¼¹öÃø¿¡¼´Â Ç×»ó 120 ¿©°³ÀÇ Active È£ÃâÀÌ ¹ß»ýÇÏ´Â ¼ÀÀÔ´Ï´Ù.
Max Concurrent Users = (Acrive Clients) x { t / r }
(t : ¸îÃʸ¶´Ù »ç¿ëÀÚ°¡ Çѹø¾¿ ¹öưÀ» ´©¸¥´Ù´Â °¡Á¤Ä¡. ¿¹) 10000(10ÃÊ) )
r : ƯÁ¤ Active Clients½ÃÀÇ Æò±Õ ÀÀ´ä½Ã°£)
À§ ¼öÄ¡¸¦ °è»êÇØ º¸¸é, Active Clients °¡ Áõ°¡ÇÔ¿¡ µû¶ó ƯÁ¤ ¼öÄ¡·Î ¼ö·ÅÇÏ°Ô µË´Ï´Ù.
±× ¼öÄ¡°¡ t °ªÀÇ °¡Á¤ÇÏ¿¡ ÃÖ´ë ¼ö¿ë°¡´É ÀοøÀÌ µË´Ï´Ù.
¶ÇÇÑ ÀÌ ¼öÄ¡´Â ¾Õ¼ TPS¿¡ ÀÇÇØ ±¸ÇÑ "Ãִ뵿½Ã»ç¿ëÀÚ"¼ö¿Í À¯»çÇÏ°Ô ÀÏÄ¡ÇÕ´Ï´Ù.
(»ç½Ç ¼öÇÐÀûÀ¸·Î´Â Á¤È®È÷ ÀÏÄ¡ÇÏ¿©¾ß Çϴµ¥, AKtools °¡ TPS¸¦ °è»êÇÒ ¶§, miscro
second ¸¦ ÀÌ¿ëÄ¡ ¾Ê°í, second ¸¦ ÀÌ¿ëÇÏ¿© devide ¿¬»êÀ» ÇÏ´Â µí ÇÕ´Ï´Ù.)
[±×¸²10]
NOTE: ±×·¯³ª, Æò±ÕÀÀ´ä½Ã°£ÀÇ ±×·¡ÇÁ([±×¸²8])¿¡¼ "¼ö¿ë/Çã¿ë°¡´ÉÇÑ ÀÀ´ä½Ã°£
½ÃÁ¡"±îÁö¸¸ Àǹ̰¡ ÀÖ´Â ¸¸Å, ÀÀ´ä½Ã°£ÀÌ ¸Å¿ì ºü¸¥ ¼Óµµ·Î ´À·ÁÁú °æ¿ì, ¼ö·Å°ª
ÀÌÀü¿¡ ÀÌ¹Ì ÇÑ°è »ç¿ëÀÚ¼ö¿¡ µµÃâµÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, "ÀÀ´ä½Ã°£ÀÌ 1ÃÊ ÀÌ»óÀº
µµÀúÈ÷ ¿ë³³ÇÒ ¼ö ¾ø´Ù" ¸é À§¿¡¼ Active Clients 80 ¿©¸íÀ϶§ Æò±ÕÀÀ´ä½Ã°£ÀÌ 1ÃÊ
°¡±îÀÌ µÈ´Ù°í ÇßÀ» ¶§(1,008 ms), 80 * { 10,000/1,008 } = 794 ¸í. À̸¦ ³ÑÀ» °æ¿ì,
ActiveClients °¡ 80 À» ³Ñ¾î¼°Ô µÇ°í, ÀÌ´Â ¿ë³³ÇÒ ¼ö ¾ø´Â(!) Æò±ÕÀÀ´ä½Ã°£(1ÃÊ)À»
¾ß±âÇÏ´Â ±¸°£ÀÌ µË´Ï´Ù.
NOTE: À§ ±×·¡ÇÁ¸¦ ÇØ¼®Çϸé,
(1) ÀÏÁ¤Çѵµ ±îÁö´Â »ç¿ëÀÚ°¡ Áõ°¡ÇÏ´õ¶óµµ ±×¿¡ µû¸¥ ºÎÇϸ¦ ÀûÀýÈ÷ ó¸®ÇÒ ¼ö
ÀÖÁö¸¸, À§¿¡¼ ¾ð±ÞÇÑ "Ãִ뵿½Ã»ç¿ëÀÚ" °¡±î¿î ¼öÄ¡¿¡¼ºÎÅÍ´Â Á¶±Ý¸¸
»ç¿ëÀÚ°¡ Áõ°¡ÇÏ¸é ±×¿¡ µû¸¥ ¼¹öÃøÀÇ ºÎÇÏ´Â ±Þ°ÝÇÏ°Ô Áõ°¡ÇÕ´Ï´Ù.
´ëÇ¥ÀûÀÎ Çö»óÀÌ "netstat -n | grep asi | wc -l" ·Î º» ½ÇÁ¦ ¼ºñ½ÌÇϰí
ÀÖ´Â °¹¼ö(OSE)ÀÇ ±Þ°ÝÇÑ Áõ°¡¸¦ ¾ß±âÇÕ´Ï´Ù.
(2) ÀÌ ¾ê±â´Â ¿ªÀ¸·Î Clients °¡ È£ÃâÇÏ´Â ºóµµ(Request Per Second)°¡
¼¹öÃø¿¡¼ 1ÃÊ´ç ó¸®ÇÒ ¼ö ÀÖ´Â °¹¼ö(Trahsaction Per Second)¸¦ ÃʰúÇÏ´Â
±× ½ÃÁ¡ºÎÅÍ, ÀϺΠRequest ´Â Queue ¿¡ ½×ÀÌ°Ô µË´Ï´Ù.
À̴ ȣÃâºóµµ¿Í 󸮴ɷÂÀÇ ¹®Á¦À̹ǷÎ, ÀÌ »óȲÀº Àý´ë º¹±¸µÇÁö ¾ÊÀ¸¸ç,
Á¡Â÷ ¾ÇÈµÇ¾î º¹±¸ ºÒ´ÉÀÇ »óÅ¿¡ µµ´ÞÇÕ´Ï´Ù.(°øÀ» ´øÁö´Â »ç¶÷°ú, °øÀ»¹Þ¾Æ
´Ù½Ã µÇ´øÁö´Â µÎ»ç¶÷ÀÌ ÀÖ´Ù°í ÇÒ ¶§, °øÀ» ´øÁö´Â »ç¶÷ÀÇ ºóµµ°¡ °øÀ»¹Þ¾Æ
µÇ´øÁ®ÁÖ´Â »ç¶÷ÀÇ Ã³¸®´É·Â ÀÌ»óÀ¸·Î ´øÁ® ¹ö¸®¸é, ¹ÞÁö ¸øÇÑ °øÀÇ ¼ö´Â
°è¼Ó ´Ã¾î¸¸°¡Áö °áÄÚ ÁÙÁö ¾ÊÁö ¾Ê½À´Ï±î)
À̰ÍÀÌ ±âÁ¸ÀÇ Client/Server ȯ°æ°ú ÀÎÅͳÝÀÇ Â÷ÀÌÀÔ´Ï´Ù. C/Sȯ°æ¿¡¼´Â
»ç¿ëÀÚ°¡ ¹öưÀ» ´©¸¦ °æ¿ì, ÀÀ´äÀÌ ¿À±âÀü±îÁö ¸ðµç ¹öưÀÌ ºñȰ¼ºÈµÇ¾î
´Ù½Ã ´©¸¦ ¼ö ¾ø¾ú½À´Ï´Ù. ÀÌ´Â ¼¹öÃøÀÇ ¼º´ÉÀÌ ³·À» °æ¿ì ´ÜÁö ÀÀ´ä¼ÓµµÀÇ
ÀúÇÏÇö»ó¸¸ ÃÊ·¡ÇÒ »Ó, Queue ¿¡ ½×ÀÎ Request ´Â ¾ðÁ¨°¡ ÀÀ´äÀÌ ¿À°Ô µË´Ï´Ù.
±×·¯³ª ºê¶ó¿ìÁ® ±â¹ÝÀÇ ÀÎÅÍ³Ý »ç¿ëÀÚ´Â ÀÀ´äÀÌ ¿ÀÁö ¾ÊÀ» ¼ö·Ï ´õ¿í
¿äûÀ» ³¯¸®´Â °æÇâÀÌ ÀÖÀ¸¸ç, ÀÌ´Â ¶Ç´Ù¸¥ È£Ãâ¹ß»ýÀ» ÅëÇØ È£Ãâºóµµ¸¦
Áõ°¡½ÃŰ°Ô µË´Ï´Ù.
¾Õ¼± Ãִ뵿½Ã»ç¿ëÀÚ¸¦ ±¸ÇÏ´Â °ø½ÄÀº "ÀÀ´äÀÌ ¾ó¸¶¸¸¿¡ ¿Àµç ¹«Á¶°Ç t ½Ã°£
°£°ÝÀ¸·Î È£ÃâÇÑ´Ù"´Â °¡Á¤ÇÏ¿¡ ÀÌ·ç¾îÁ³½À´Ï´Ù.
¸¸¾à "ÀÀ´äÀÌ ¾ó¸¶°¡ °É¸®µç ÀÀ´äÀÌ Á¤»óÀûÀ¸·Î ¿Â ÈÄ, t ½Ã°£ ÀÌÈÄ¿¡ ´Ù½Ã
È£ÃâÇÑ´Ù"´Â C/Sȯ°æÀÇ °¡Á¤ÇÏ¿¡ µ¿ÀÏÇÑ "Ãִ뵿½Ã»ç¿ëÀÚ"¸¦ ±¸ÇØ º¸¸é
±× Â÷À̸¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù.
C/S Max Concurrent Users = Active Clients x { (r+t) / r }
(t : ÀÀ´äÀÌ ¿Â ÀÌÈÄ ¸îÃʰ¡ Áö³ ÈÄ ´Ù½Ã ¹öưÀ» ´©¸¥´Ù´Â °¡Á¤Ä¡. ¿¹) 10000(10ÃÊ) )
r : ƯÁ¤ Active Clients½ÃÀÇ Æò±Õ ÀÀ´ä½Ã°£)
[±×¸²11]
Áï, Active Clients »ç¿ëÀÚ Áõ°¡¿¡ µû¶ó ¼ö¿ëÇÒ ¼ö ÀÖ´Â Clients ¼ö´Â ±×¿¡ µû¶ó
linear ÇÏ°Ô Áõ°¡ÇÕ´Ï´Ù. Áï, »ç¿ëÀÚ°¡ Áõ°¡ÇÏ´õ¶óµµ, ÀÀ´ä½Ã°£¸¸ ´À·ÁÁú »Ó,
¿©ºÐÀÇ ÀÀ´ä´ë±â»óÅ¿¡ ºüÁø request ¼ö´Â ÀÏÁ¤ ½Ã°£ÈÄ ´õÀÌ»ó Áõ°¡ÇÏÁö ¾Ê±â
¶§¹®ÀÔ´Ï´Ù.
ÀÎÅÍ³Ý ±â¹ÝÀÇ À¥½Ã½ºÅÛÀÌ ÀÌ·¸°Ô ¸»¸¹Àº ÀÌÀ¯°¡ ¿©±â¿¡ ÀÖ½À´Ï´Ù.
3. °á·Ð
Æ©´×Àº Á¾ÇÕ¿¹¼úÀÔ´Ï´Ù.
PS: AKtools : ftp://ftp.javaservice.net/pub/aktools/
Document :
http://www.javaservice.net/~java/bbs/read.cgi?m=etc&b=etc&c=r_p&n=972365763
-------------------------------------------------------
º» ¹®¼´Â ÀÚÀ¯·Ó°Ô ¹èÆ÷/º¹»ç ÇÒ ¼ö ÀÖÀ¸³ª ¹Ýµå½Ã
ÀÌ ¹®¼ÀÇ ÀúÀÚ¿¡ ´ëÇÑ ¾ð±ÞÀ» »èÁ¦ÇÏ½Ã¸é ¾ÈµË´Ï´Ù
================================================
ÀÚ¹Ù¼ºñ½º³Ý ÀÌ¿ø¿µ
E-mail: javaservice@hanmail.net
PCS:019-310-7324
================================================
image4_2.gif (8368 Bytes)
image5.gif (15854 Bytes)
image0_2.gif (11888 Bytes)
image2.gif (21694 Bytes)
image1.gif (15062 Bytes)
image6.gif (17121 Bytes)
image0_3.gif (9539 Bytes)
image0_4.gif (9969 Bytes)
image0_1.gif (2955 Bytes)
image3.gif (23246 Bytes)
image4_0.gif (20848 Bytes)
|