|
°Á Àü Å¿ÀÀÇ Àâ´ã>
À̹ø °Á´ Microsoft MVP(IIS ºÐ¾ß)ÀÎ ¼Û¿ø¼® ´ÔÀÌ º¸³»ÁֽŠIIS 7.0¿¡ ´ëÇÑ Áß¿ä Á¤º¸ °ÁÂÀÔ´Ï´Ù.
¼Û¿ø¼® ±ºÀº °³ÀÎÀûÀ¸·Î www.egocube.pe.kr »çÀÌÆ®¸¦ ¿î¿µÇϰí Àֱ⵵ ÇÕ´Ï´Ù.
IIS ºÐ¾ßÀÇ MVP ´ä°Ô ³²µéº¸´Ù ÇÑ¹ß ¾Õ¼¼ IIS 7¿¡ ´ëÇÑ °Á¸¦ º¸³»ÁÖ¾ú³×¿ä.
ÇöÀç ¼Û±ºÀº MSDN¿¡ ÀÖ´Â IIS 7 °ü·Ã Ä÷³À» Çѱ¹ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿¡ ¹ø¿ª Á¦°øÇϰí Àֱ⵵ ÇÕ´Ï´Ù.
±×·³, ÀÌ Ä£±¸ÀÇ ¸ÚÁø °Á¿¡ Çѹø ºüÁ®º¸½ÃÁö¿°~
IIS 7.0 ÀνºÆÛ·¹ÀÌ¼Ç - 17, (Managing Worker Processes and AppDomains in IIS7 with WMI ¹ø¿ª ¹× ÁÖÇØ)
´ÙÀ½Àº º» ¹ø¿ª ¹®¼ÀÇ ±ÇÇÑ¿¡ °üÇÑ Á¦¹Ý »çÇ×ÀÔ´Ï´Ù.
- º» ¹ø¿ª ¹®¼¿¡ ´ëÇÑ ¸ðµç ÀúÀÛ±ÇÀº ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®»ç¿¡ ÀÖÀ¸¸ç, ´Ü¼øÈ÷ IIS 7.0 À» ³Î¸® ¾Ë¸®°íÀÚ ÇÏ´Â °³ÀÎÀûÀÎ ÃëÁö¿¡ ÀÇÇØ ¹ø¿ªµÇ¾î Á¦°øµÇ´Â ¹®¼ÀÔ´Ï´Ù.
- ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®»çÀÇ ¿äûÀÌ ÀÖ´Â °æ¿ì ¾ðÁ¦¶óµµ °Ô½Ã°¡ Áß´ÜµÉ ¼ö ÀÖ½À´Ï´Ù.
- º»¹®¿¡¼ Á¦°øÇÏ´Â ¹ø¿ª¿¡´Â ¿À¿ªÀÌ Æ÷ÇԵǾî ÀÖÀ» ¼ö ÀÖÀ¸¸ç, ÁÖÇØÀÇ ³»¿ëµµ °³ÀÎÀûÀ¸·Î ÆÄ¾ÇÇÑ °ÍÀ¸·Î ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®»ç´Â ÀÌ ³»¿ë¿¡ ´ëÇØ ÀÏüÀÇ º¸ÀåÀ» ÇÏÁö ¾Ê½À´Ï´Ù.
- º»¹®ÀÇ ¿ø¹®Àº IIS °³¹ßÆÀÀÌ Á¦°øÇÏ´Â Managing Worker Processes and AppDomains in IIS7 with WMI ÀÔ´Ï´Ù.
¼·Ð
°£´ÜÇÑ WMI ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ¿© ºñ±³Àû ½±°Ô IIS 7.0 ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º¿Í ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀ» °ü¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
IIS 7.0 ÀÇ ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º´Â À©µµ¿ì ÇÁ·Î¼¼½º Ȱ¼ºÈ ¼ºñ½º (WAS) ¿¡ ÀÇÇØ »ý¼ºµÇ¸ç W3WP.EXE ¿¡ ÀÇÇØ¼ ½ÇÇàµË´Ï´Ù.
ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º´Â ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀ» Æ÷ÇÔÇÒ ¼ö ÀÖÀ¸¸ç, ÀϹÝÀûÀ¸·Î ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀº ƯÁ¤ .ASPX ÆäÀÌÁö ¿äû¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î »ý¼ºµË´Ï´Ù.
º»¹®¿¡¼´Â ´ÜÁö ¸î ÁÙÀÇ VBScript Äڵ常À» »ç¿ëÇÏ¿© ´ÙÀ½°ú °°Àº ÀÛ¾÷µéÀ» ¼öÇàÇÏ´Â ¹æ¹ýÀ» »ìÆìº¸·Á°í ÇÕ´Ï´Ù. *:
- ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º¿¡¼ ÇöÀç ½ÇÇàÁßÀÎ ¿äûÀ» »ìÆìº¸´Â ¹æ¹ý
- ¸ðµç ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½ºÀÇ »óŸ¦ Á¶È¸ÇÏ´Â ¹æ¹ý
- ƯÁ¤ ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎ, ¶Ç´Â ¸ðµç ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀ» ¾ð·Îµå ÇÏ´Â ¹æ¹ý
- ¸ðµç ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎ ¹× ±× ¼Ó¼ºµéÀ» Ãâ·ÂÇÏ´Â ¹æ¹ý
|
| * |
ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º¿Í ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀº °ÅÀÇ ¸ðµç °æ¿ì¿¡ IIS ÀÚü ¹× .NET ·±Å¸ÀÓ¿¡ ÀÇÇØ¼ »ý¼ºµÈ´Ù.
°³¹ßÀÚ°¡ ÇÁ·Î±×·¡¹Ö ÀÛ¾÷À» ÅëÇØ »ý¼ºÇÏ´Â °æ¿ì´Â °ÅÀÇ ¾ø´Ù°í ¸»ÇÒ ¼ö ÀÖÀ¸¸ç,
±×·¸±â ¶§¹®¿¡ º»¹®¿¡¼´Â ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º¿Í ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀ» »ý¼ºÇÏ´Â ¹æ¹ýÀº ´Ù·çÁö ¾Ê´Â´Ù.
º»¹®ÀÌ ÀÌÀü ¹ø¿ª ¹®¼¿Í ±¸º°µÇ´Â ºÎºÐÀÌ´Ù.
|
ù ¹øÂ° ´Ü°è
|
| * |
±âº»ÀûÀ¸·Î º»¹®ÀÇ ¿ø¹®Àº 2007 ³â 4 ¿ù °æ¿¡ ºñ½ºÅ¸¿Í 2008 º£Å¸ 3 ¸¦ ±âÁØÀ¸·Î ÀÛ¼ºµÈ ¹®¼ÀÌ´Ù.
±×·¯³ª, ¹ø¿ª¹®Àº °¡Àå ÃֽйöÀüÀÎ RC1 ¿¡¼ °ÅÀÇ ´ëºÎºÐÀÇ Å×½ºÆ®¸¦ ¸¶Ä£ °á°ú¸¦ ¹Ý¿µÇÑ °ÍÀÌ´Ù.
°á°ú¸¸ ¾ê±âÇÑ´Ù¸é »ç¼ÒÇÑ ¸î °¡Áö¸¦ Á¦¿ÜÇϰí´Â Å« º¯È´Â Á¸ÀçÇÏÁö ¾Ê´Â´Ù.
|
| ** |
¹Î¸ÁÇϱä ÇÏÁö¸¸, À̰ÍÀÌ Áø½ÇÀÌ´Ù.
WMI ¿Í °ü·ÃµÈ óÀ½ÀÇ µÎ ¹ø¿ª ¹®¼¿¡ ¼³¸íÇß´ø APPCMD ¸í·É¾î¸¦ »ç¿ëÇÑ ¹é¾÷°ú º¹±¸´Â º»¹®À» »ìÆìº¸´Âµ¥ ÀÖ¾î, ±×´ÙÁö Å« Àǹ̰¡ ¾ø´Ù.
´ÜÁö ÆÄÀÏÀ» º¹»çÇØµÎ¾ú´Ù°¡ ´Ù½Ã µ¤¾î¾²±â¸¸ ÇÏ¸é º¹±¸°¡ µÇ´Â °ÍÀÌ´Ù.
±×·¯³ª, ÇÊÀÚÀÇ ÀÔÀå¿¡¼´Â Á÷Á¢ ÀÛ¼ºÇÑ ¹®¼°¡ ¾Æ´Ñµ¥´Ù°¡ ¹ø¿ªÇÑ ¹®¼ÀÇ ³»¿ëÀ» ¸¶À½´ë·Î º¯°æÇÒ ¼ö´Â ¾ø¾ú°í, ¹èÄ¡ ÆÄÀÏ µîÀ» ÀÛ¼ºÇÏ´Â °æ¿ì¿¡´Â Á¦¹ý ¾µ¸ðÀÖ´Â ¸í·É¾î ±¸¹®À̶ó°í ÆÇ´ÜµÇ¾î ±×´ë·Î ¹ø¿ªÀ» Çß´Ù.
|
ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º
À̹ø ´Ü¶ô¿¡¼´Â À¥ ¼¹ö¿¡ Á¸ÀçÇÏ´Â °¢°¢ÀÇ ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½ºµéÀÌ ÇöÀç ó¸®Çϰí ÀÖ´Â ¿äûµéÀ» Á¶È¸ÇÏ´Â ¹æ¹ýÀ» »ìÆìº¾´Ï´Ù.
±×¸®°í, ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½ºÀÇ PID ¿Í »óÅÂ, ±×¸®°í ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º°¡ ¼ÓÇØ ÀÖ´Â ÀÀ¿ë ÇÁ·Î±×·¥ Ç®À» Á¶È¸ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¾´Ï´Ù.
ó¸®ÁßÀÎ ¿äû Á¶È¸
IIS 7.0 Àº ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º°¡ ÇöÀç ó¸®Çϰí ÀÖ´Â ¿äûµéÀ» »ìÆìº¼ ¼ö ÀÖ´Â »õ·Ó°í Èï¹Ì·Î¿î ±â´ÉÀ» Á¦°øÇØÁÝ´Ï´Ù.
WorkerProcess Ŭ·¡½ºÀÇ GetExecutingRequests ¸Þ¼µå¸¦ »ç¿ëÇÏ¿© ÀÌ Á¤º¸¸¦ »ìÆìº¼ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ¸Þ¼µå´Â ÀÚ½ÅÀÌ ½ÇÇàµÇ´Â ½ÃÁ¡¿¡ ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º°¡ ó¸®Çϰí ÀÖ´Â ¿äûµéÀÇ Á¤º¸¸¦ ½º³À¼¦ ¹æ½ÄÀ¸·Î Á¦°øÇØÁÝ´Ï´Ù.
´ëºÎºÐÀÇ ¿äûÀº ´ë´ÜÈ÷ ½Å¼ÓÇÏ°Ô Ã³¸®µÇ¹Ç·Î, À¥ ºê¶ó¿ìÀú¿¡¼ ¼öÀÛ¾÷À¸·Î ÀÌ ¸Þ¼µå¸¦ Å×½ºÆ®ÇÏ´Â ÀÛ¾÷ÀÌ ½±Áö¸¸Àº ¾Ê½À´Ï´Ù.
±×·¸±â ¶§¹®¿¡, Å×½ºÆ®¸¦ À§ÇÑ À¥ ÆäÀÌÁö¸¦ Çϳª ÀÛ¼ºÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
¸Þ¸ðÀåÀ» »ç¿ëÇÏ¿© ÅØ½ºÆ® ÆÄÀÏ¿¡ ´ÙÀ½ÀÇ ÅØ½ºÆ®¸¦ ÀÔ·ÂÇϰí, default.aspx ¶ó´Â À̸§À¸·Î ÀúÀåÇÕ´Ï´Ù.
<%
System.Threading.Thread.Sleep(30000)
Response.Write ("I'm finally finished...")
%>
±× ´ÙÀ½¿¡, ÀÌ ÆÄÀÏÀ» Å×½ºÆ®¿¡ »ç¿ëÇϰíÀÚ ÇÏ´Â À¥ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÄÁÅÙÃ÷ ·çÆ® µð·ºÅ͸®¿¡ º¹»çÇÕ´Ï´Ù.
ÀÌ ¶§, Default.aspx ÆÄÀÏÀÌ ÇØ´ç µð·ºÅ͸®ÀÇ À¯ÀÏÇÑ ±âº» ¹®¼À̰ųª, ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ±âº» ¹®¼ ¸ñ·Ï Áß, ÃÖ»ó´Ü¿¡ À§Ä¡Çϰí ÀÖ¾î¾ß¸¸ ÇÕ´Ï´Ù.
Áö±Ý ¿ì¸®µéÀÌ »ý¼ºÇÑ Default.aspx ÆÄÀÏÀÇ ¿ëµµ´Â À¥ ÆäÀÌÁö¸¦ 30 ÃÊ µ¿¾È °Á¦·Î ½ÇÇà½ÃŰ´Â °ÍÀÔ´Ï´Ù.
±× °á°ú·Î, ½ºÅ©¸³Æ®¸¦ ÅëÇØ GetExecutingRequests ¸Þ¼µå¸¦ Å×½ºÆ® ÇÒ ¼ö ÀÖ´Â ½Ã°£ÀûÀÎ ¿©À¯¸¦ ¾ò°Ô µË´Ï´Ù.
GetExecutingRequests ¸Þ¼µå´Â ºñ¾îÀÖ´Â OUT ¹è¿ º¯¼ö¸¦ ÀÎÀÚ·Î ¹Þ°í, ¿©±â¿¡ HttpRequest °´Ã¼¸¦ ä¿ö³Ö½À´Ï´Ù.
°¢°¢ÀÇ ¿äûµé¿¡ ´ëÇÑ ¼Ó¼ºµéÀ» »ìÆìº¸·Á¸é ÀÌ ¹è¿ ÀÎÀÚÀÇ Ç׸ñµéÀ» ¹Ýº¹ÀûÀ¸·Î ó¸®ÇÏ¸é µË´Ï´Ù.
´ÙÀ½ ½ºÅ©¸³Æ®´Â HttpRequest °³Ã¼ Ãâ·ÂÀ» ¹Þ°í, °¢°¢ÀÇ ¿äû¿¡ ´ëÇÑ ÇöÀç ¸ðµâ, µ¿»ç, È£½ºÆ®¸í, ±×¸®°í URL Á¤º¸¸¦ Ãâ·ÂÇÕ´Ï´Ù.
ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϱâ Àü¿¡, À¥ ºê¶ó¿ìÀú¸¦ »ç¿ëÇÏ¿© ÀúÈñµéÀÌ »ý¼ºÇÑ Default.aspx ÆÄÀÏ À¥ ÆäÀÌÁö¸¦ ¿±´Ï´Ù.
±×·¯¸é, ¿äû 󸮰¡ ½ÇÇàµÇ°í ÆäÀÌÁö ·»´õ¸µÀÌ ¿Ï·áµÉ ¶§±îÁö 30 ÃÊ µ¿¾È ´ë±âÇÏ°Ô µË´Ï´Ù.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
Set oWorkerProcesses = oWebAdmin.InstancesOf("WorkerProcess")
For Each oWorkerProcess In oWorkerProcesses
' ÇÁ·Î¼¼½º Å¥¿¡ Á¸ÀçÇÏ´Â ¿äûµéÀ» ¹è¿ º¯¼ö¿¡ ÀûÀçÇÕ´Ï´Ù.
oWorkerProcess.GetExecutingRequests arrReqs
' Å¥¿¡¼ °¡Á®¿Â ¿äûµéÀÇ °¹¼ö¸¦ Á¡°ËÇÕ´Ï´Ù.
If IsNull(arrReqs) Then
WScript.Echo "No currently executing requests."
Else
' ¿äûÀÇ °¹¼ö¸¦ Ãâ·ÂÇÕ´Ï´Ù.
WScript.Echo "Number of currently executing requests: " & _
UBound(arrReqs) + 1
WScript.Echo
' °¢°¢ÀÇ ¿äûÀÇ ¼Ó¼ºµéÀ» Ãâ·ÂÇÕ´Ï´Ù.
For Each oRequest In arrReqs
WScript.Echo "Module: " & "[" & oRequest.CurrentModule & "]"
WScript.Echo "Verb: " & "[" & oRequest.Verb & "]"
WScript.Echo "HostName: " & "[" & oRequest.HostName & "]"
WScript.Echo "Url: " & "[" & oRequest.Url & "]"
WScript.Echo
Next
End If
Next
Ãâ·Â °á°ú »ç·Ê
ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃÄѺ¸¸é ´ÙÀ½°ú ºñ½ÁÇÑ °á°ú°¡ Ãâ·ÂµÉ °ÍÀÔ´Ï´Ù.
Number of currently executing requests: 2
Module: [ManagedPipelineHandler]
Verb: [GET]
HostName: [localhost]
Url: [/MyApp/]
Module: [ManagedPipelineHandler]
Verb: [GET]
HostName: [localhost]
Url: [/MyApp/default.aspx]
ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º »óÅ Á¶È¸ *
IIS 7.0 WMI Á¦°øÀÚÀÇ WorkerProcess °³Ã¼´Â ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º°¡ ÇöÀç ½ÃÀÛ ÁßÀÎÁö, ½ÇÇà ÁßÀÎÁö, ÁßÁö ÁßÀÎÁö µîÀÇ Á¤º¸¸¦ Á¦°øÇØÁÖ´Â GetState ¸Þ¼µå¸¦ Á¦°øÇÕ´Ï´Ù.
¶ÇÇÑ, WorkerProcess ¿¡´Â ¿ì¸®µéÀÌ Èï¹Ì¸¦ °¡Áú¸¸ÇÑ µÎ °³ÀÇ ¼Ó¼ºµéÀÌ Á¦°øµÇ´Âµ¥, ApplicationPool ¼Ó¼º°ú PID ¼Ó¼ºÀÌ ¹Ù·Î ±×°ÍÀÔ´Ï´Ù.
ApplicationPool ¼Ó¼ºÀº ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º°¡ ¼ÓÇØ ÀÖ´Â ÀÀ¿ë ÇÁ·Î±×·¥ Ç® Á¤º¸¸¦ Á¦°øÇÕ´Ï´Ù.
±×¸®°í, PID ¼Ó¼ºÀº ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º¸¦ À¯ÀÏÇÏ°Ô ±¸ºÐÇÒ ¼ö ÀÖ´Â ÇÁ·Î¼¼½º ID Á¤º¸¸¦ Á¦°øÇÕ´Ï´Ù.
´ÙÀ½ÀÇ ÄÚµå´Â °¢°¢ÀÇ ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½ºÀÇ PID ¿Í »óÅÂ, ÀÀ¿ë ÇÁ·Î±×·¥ Ç® Á¤º¸¸¦ Ãâ·ÂÇÕ´Ï´Ù.
¸¸¾à, ½ÇÇà ÁßÀÎ ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º°¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é ½ºÅ©¸³Æ®´Â ¾Æ¹«·± µ¿ÀÛµµ ÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù.
' WMI WebAdministration ³×ÀÓ½ºÆäÀ̽º¿¡ ¿¬°áÇÕ´Ï´Ù.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
' ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½ºµéÀÇ ÀνºÅϽº¸¦ ¾ò½À´Ï´Ù.
Set oWorkerProcesses = oWebAdmin.InstancesOf("WorkerProcess")
' °¢°¢ÀÇ ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½ºÀÇ ID ¿Í ÀÀ¿ë ÇÁ·Î±×·¥ Ç®, »óŸ¦ ¾ò°í Ãâ·ÂÇÕ´Ï´Ù.
For Each oWorkerProcess In oWorkerProcesses
' GetStateDescription ÇÔ¼ö¸¦ ÅëÇØ¼ ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º »óŸ¦ Ãâ·ÂÇÕ´Ï´Ù.
WScript.Echo "WorkerProcess" & oWorkerProcess.PID & ": " & _
GetStateDescription(oWorkerProcess.GetState)
WScript.Echo "Application Pool:" & oWorkerProcess.ApplicationPool
WScript.Echo
Next
' ¸®ÅϰªÀ» ÅØ½ºÆ®·Î º¯È¯ÇØÁÖ´Â ÇÔ¼ö.
Function GetStateDescription(StateCode)
Select Case StateCode
Case 0
GetStateDescription = "Starting"
Case 1
GetStateDescription = "Running"
Case 2
GetStateDescription = "Stopping"
Case 3
GetStateDescription = "Unknown"
Case Else
GetStateDescription = "Undefined value."
End Select
End Function
Ãâ·Â °á°ú »ç·Ê
ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃÄѺ¸¸é ´ÙÀ½°ú ºñ½ÁÇÑ °á°ú°¡ Ãâ·ÂµÉ °ÍÀÔ´Ï´Ù.
WorkerProcess 1336: Running
Application Pool: DefaultAppPool
WorkerProcess 3680: Running
Application Pool: Classic .NET AppPool
WorkerProcess 1960: Running
Application Pool: NewAppPool
Áö±Ý±îÁö ¿ì¸®µéÀº ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½ºÀÇ ºñ¹ÐÀ» ¹àÇô³»±â À§ÇØ WMI ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» »ìÆìº¸¾Ò½À´Ï´Ù.
±×·³, À̹ø¿¡´Â ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀο¡ °üÇØ¼ »ìÆìº¸µµ·Ï ÇϰڽÀ´Ï´Ù.
|
| * |
ÇÑ °¡Áö ÁÖÀÇÇØ¾ß ÇÒ Á¡ÀÌ ÀÖ´Ù.
ÇÊÀÚ°¡ Á÷Á¢ Å×½ºÆ®¸¦ ÇØ º» °á°ú, º»¹®¿¡ ¼³¸íµÈ ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½ºÀÇ µÎ °¡Áö Áß¿äÇÑ ¼Ó¼º, Áï ApplicationPool ¼Ó¼º°ú PID ¼Ó¼ºÀº ±× À̸§ÀÌ º¯°æµÇ¾ú´Ù.
Âü°í·Î ÇÊÀÚÀÇ Å×½ºÆ® ȯ°æÀº ºñ½ºÅ¸ SP1 RTM °ú 2008 RC1 ÀÌ´Ù.
±×¸®°í, SP1 RTM À» ¼³Ä¡ÇÏÁö ¾ÊÀº ºñ½ºÅ¸¿¡¼´Â Å×½ºÆ®¸¦ ½Ç½ÃÇØº¸Áö ¸øÇßÀ¸¹Ç·Î ÀÌ ºÎºÐÀº Á÷Á¢ È®ÀÎÇØº¸±â ¹Ù¶õ´Ù.
´ÙÀ½ À̹ÌÁö´Â ºñ½ºÅ¸ SP1 RTM »ó¿¡¼ ĸÃçÇÑ ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º Ŭ·¡½ºÀÇ ¼Ó¼ºÅÇÀÌ´Ù.
ÀÌ À̹ÌÁö¿¡¼µµ È®ÀÎÇÒ ¼ö ÀÖ´Â °Íó·³ ApplicationPool ¼Ó¼ºÀº AppPoolName À¸·Î, PID ¼Ó¼ºÀº ProsessId ·Î À̸§ÀÌ º¯°æµÇ¾ú´Ù.
µû¶ó¼, º»¹®ÀÇ »ùÇà ½ºÅ©¸³Æ®¸¦ ±×´ë·Î ½ÇÇà½ÃŰ¸é ¿À·ù°¡ ¹ß»ýÇÏ°Ô µÇ¹Ç·Î, ÀÌ Á¡ Âü°íÇϱ⠹ٶõ´Ù.
|
ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎ *
ƯÁ¤ ASP.NET ÆäÀÌÁö¿¡ ´ëÇÑ ¿äûÀÌ ÃÖÃÊ·Î Àü´ÞµÇ¸é, IIS ÀÇ °ü¸®µÇ´Â ¿£Áø ¸ðµâÀÌ ¸Þ¸ð¸®»ó¿¡ ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀ» »ý¼ºÇÕ´Ï´Ù.
ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀº ASPX ÆäÀÌÁö ¹× °ü¸®µÇ´Â Äڵ带 »ç¿ëÇÏ´Â ±âŸ ÆäÀÌÁöµé¿¡ ´ëÇÑ ¿äûÀ» ó¸®ÇÕ´Ï´Ù.
WMI ¸¦ »ç¿ëÇÏ¸é ¼Õ½±°Ô ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀ» ¾ð·ÎµåÇϰųª ¿°ÅÇÒ ¼ö ÀÖÀ¸¸ç, À̹ø ´Ü¶ô¿¡¼´Â ÀÌ µÎ °¡Áö ¹æ¹ýÀ» ¸ðµÎ »ìÆìº¼ °ÍÀÔ´Ï´Ù.
ƯÁ¤ ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎ ¾ð·Îµå
IIS 7.0 ¿¡¼ ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀ» ¾ð·ÎµåÇÏ´Â ÀÛ¾÷°ú IIS 6.0 ¿¡¼ÀÇ ÀÛ¾÷°ú´Â ´Ù¼Ò Â÷À̰¡ Á¸ÀçÇÕ´Ï´Ù.
¿Ö³ÄÇϸé, IIS 6.0 ÀÇ AppUnload ¸í·ÉÀÌ ¾Æ¿ô-¿Àºê-ÇÁ·Î¼¼½º ASP ÀÀ¿ë ÇÁ·Î±×·¥À» ¾ð·ÎµåÇÏ´Â ±â´ÉÀ» Á¦°øÇÏ´Â ¹Ý¸é, IIS 7.0 ÀÇ AppDomain.Unload ¸Þ¼µå´Â ¿ÀÁ÷ ASP.NET ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀθ¸À» ¾ð·ÎµåÇϱâ À§ÇÑ °ÍÀ̱⠶§¹®ÀÔ´Ï´Ù.
IIS 7.0 ¿¡¼´Â ´õ ÀÌ»ó IIS 5.0 ȣȯ ¸ðµå¸¦ Á¦°øÇÏÁö ¾ÊÀ¸¹Ç·Î, AppUnload ´Â Áö¿øµÇÁö ¾Ê½À´Ï´Ù.
ƯÁ¤ ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀ» ¾ð·ÎµåÇϱâ À§Çؼ´Â µµ¸ÞÀÎÀ» ½Äº°ÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù.
AppDomain °³Ã¼´Â ¼¼ °³ÀÇ Å° ¼Ó¼º, ApplicationPath, ID, ±×¸®°í SiteName À» °®°í ÀÖ½À´Ï´Ù.
±×·¸Áö¸¸, ÀÌ Áß ÇÑ °¡Áö ¼Ó¼º¸¸ »ç¿ëÇØµµ ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀ» ½Äº°ÇÒ ¼ö ÀÖ½À´Ï´Ù.
±×¸®°í, ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎ ID ¼Ó¼ºÀº ¼ýÀÚ ÇüŰ¡ ¾Æ´Ñ, ´ÙÀ½°ú °°Àº ÇüÅÂÀÇ °æ·Î ¹®ÀÚ¿ÀÔ´Ï´Ù.:
/LM/W3SVC/1/ROOT
ÀÌ °æ·Î¿¡¼ "1" Àº »çÀÌÆ® ID ¸¦ ÀǹÌÇÕ´Ï´Ù.
(±âº»ÀûÀ¸·Î, 1 Àº ±âº» À¥ »çÀÌÆ®¿¡ ´ëÀÀµË´Ï´Ù.)
¸¸¾à, ¸ÕÀú ¼¹ö»ó¿¡ Á¸ÀçÇÏ´Â ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀεé°ú ±× ¼Ó¼ºµéÀÇ ¸ñ·ÏÀ» Á¶È¸Çغ¸°í ½Í´Ù¸é, º»¹® ÇÏ´ÜÀÇ "ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎ ¿°Å" ºÎºÐÀ» ¸ÕÀú »ìÆìº¸½Ã±â ¹Ù¶ø´Ï´Ù.
´ÙÀ½ÀÇ ½ºÅ©¸³Æ®´Â "Northwind" ¶ó´Â À̸§ÀÇ ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀ» ¾ð·ÎµåÇÕ´Ï´Ù.
ÀÌ ½ºÅ©¸³Æ®¿¡¼´Â »ç¿ë °¡´ÉÇÑ ¸ðµç ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀÇ ¸ñ·ÏÀ» ApplicationPath ¼Ó¼ºÀÌ ÀÏÄ¡ÇÏ´Â Ç׸ñÀ» ãÀ» ¶§±îÁö ¹Ýº¹ÇÏ¿© Á¶È¸Çϰí ÀÖ½À´Ï´Ù.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
Set oAppDomains = oWebAdmin.ExecQuery("SELECT * FROM AppDomain")
' Northwind ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀθ¸ ¾ð·ÎµåÇÕ´Ï´Ù.
For Each oAppDomain In oAppDomains
If oAppDomain.ApplicationPath = "/Northwind/" Then
oAppDomain.Unload
Exit For
End If
Next
¸ðµç ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎ ¾ð·Îµå
¸ðµç ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀ» ¾ð·ÎµåÇÏ´Â ¹æ¹ýÀº °£´ÜÇÕ´Ï´Ù.
¸ÕÀú ¸ðµç ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀÇ ¸ñ·ÏÀ» ¾ò°í, ¹Ýº¹ÇÏ¿© ¸ðµÎ ¾ð·Îµå½ÃŰ¸é µË´Ï´Ù.
´ÙÀ½ ½ºÅ©¸³Æ®´Â IIS 7.0 À¥ ¼¹ö»ó¿¡ Á¸ÀçÇÏ´Â ¸ðµç ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀ» ¾÷·ÎµåÇÕ´Ï´Ù.
°£´ÜÇÑ WQL ÁúÀǹ® (WQL Àº SQL ÀÇ WMI ¹öÀüÀÔ´Ï´Ù.) À» »ç¿ëÇÏ¿© ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀÇ ¸ñ·ÏÀ» ¾ò´Â ¹æ¹ýÀ» ÁÖÀÇÇÏ¿© »ìÆìº¸½Ã±â ¹Ù¶ø´Ï´Ù. **
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
' À¥ ¼¹ö»ó¿¡ Á¸ÀçÇÏ´Â ¸ðµç ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀ» ¾ò´Â´Ù.
Set oAppDomains = oWebAdmin.ExecQuery("SELECT * FROM AppDomain")
' ¸ðµç ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀ» ¾ð·ÎµåÇÑ´Ù.
For Each oAppDomain In oAppDomains
oAppDomain.Unload
Next
ÀÌ ½ºÅ©¸³Æ®¿¡¼ »ç¿ëÇÑ WQL ÁúÀǹ®À», ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º¿¡¼ »ç¿ëÇß´ø °Í°ú µ¿ÀÏÇÏ°Ô WMI InstancesOf ¸Þ¼µå¸¦ »ç¿ëÇϵµ·Ï ¹Ù²Ü ¼öµµ ÀÖ½À´Ï´Ù.
Set oAppDomains = oWebAdmin.InstancesOf("AppDomain")
ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎ ¿°Å
¹æ±Ý Àü¿¡ »ìÆìºÃ´ø ½ºÅ©¸³Æ®¿Í À¯»çÇÑ Äڵ带 »ç¿ëÇÏ¿©, ÇöÀç ½ÇÇàÁßÀÎ ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀεé°ú ±× ¼Ó¼ºµéÀ» Ãâ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½Àº AppDomain ÀÇ ¼Ó¼º ¸ñ·ÏÀÔ´Ï´Ù.:
ApplicationPath
Id
IsIdle
PhysicalPath
ProcessId
SiteName
±×¸®°í, ¿©±â¿¡¼ ÇÑ °¡Áö ÁÖÀÇÇØ¾ß ÇÒ ºÎºÐÀº ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀÇ ÇÁ·Î¼¼½º ID ¼Ó¼º À̸§Àº "ProcessID" À̸ç, WorkerProcess Ŭ·¡½º¿¡¼¿Í °°Àº "PID" °¡ ¾Æ´Ï¶ó´Â Á¡ÀÔ´Ï´Ù. ***
´ÙÀ½ ½ºÅ©¸³Æ®´Â °¢°¢ÀÇ ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀÇ PhysicalPath ¼Ó¼ºÀ» Á¦¿ÜÇÑ ¸ðµç ¼Ó¼ºµéÀ» Ãâ·ÂÇÕ´Ï´Ù.
±×·¯³ª, ¿©·¯ºÐµéÀÌ ¿øÇϱ⸸ ÇÑ´Ù¸é °£´ÜÇÏ°Ô Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÆíÀǸ¦ À§ÇØ, ÀÌ ½ºÅ©¸³Æ®¿¡¼´Â Ű ¼Ó¼º°ú ·±-ŸÀÓ ¼Ó¼ºµéÀ» ±¸ºÐÇÏ¿© Ãâ·ÂÇϰí ÀÖ½À´Ï´Ù.
' WMI WebAdministration ³×ÀÓ½ºÆäÀ̽º¿¡ ¿¬°áÇÕ´Ï´Ù.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
Set oAppDomains = oWebAdmin.InstancesOf("AppDomain")
WScript.Echo "AppDomain Count: " & oAppDomains.Count
WScript.Echo
ADCounter = 0
For Each oAppDomain In oAppDomains
ADCounter = ADCounter + 1
WScript.Echo "---- AppDomain" & ADCounter & "of " & _
oAppDomains.Count & "----" & vbCrLf
WScript.Echo "[ Key properties ]"
WScript.Echo "ID: " & oAppDomain.ID
WScript.Echo "Site Name: " & oAppDomain.SiteName
WScript.Echo "Application Path:" & oAppDomain.ApplicationPath
WScript.Echo
WScript.Echo "[ Run-time properties ]"
WScript.Echo "Process ID: " & oAppDomain.ProcessID
WScript.Echo "Is idle: " & oAppDomain.IsIdle
WScript.Echo vbCrLf
Next
Ãâ·Â °á°ú »ç·Ê
ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃÄѺ¸¸é ´ÙÀ½°ú ºñ½ÁÇÑ °á°ú°¡ Ãâ·ÂµÉ °ÍÀÔ´Ï´Ù.
AppDomain Count: 3
---- AppDomain 1 of 3 ----
[ Key properties ]
ID: /LM/W3SVC/1/ROOT
Site Name: Default Web Site
Application Path: /
[ Run-time properties ]
Process ID: 3608
Is idle: False
---- AppDomain 2 of 3 ----
[ Key properties ]
ID: /LM/W3SVC/2/ROOT/ContosoApp
Site Name: ContosoSite
Application Path: /ContosoApp/
[ Run-time properties ]
Process ID: 3608
Is idle: True
---- AppDomain 3 of 3 ----
[ Key properties ]
ID: /LM/W3SVC/1/ROOT/Fabrikam
Site Name: Default Web Site
Application Path: /Fabrikam/
[ Run-time properties ]
Process ID: 2552
Is idle: False
|
| * |
ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎ (AppDomain) ¿¡ ´ëÇÑ Á¤º¸´Â ´ÙÀ½ÀÇ MSDN ¹®¼¸¦ Âü°íÇϱ⠹ٶõ´Ù.
|
| ** |
WQL ¿¡ ´ëÇÑ Á¤º¸´Â ´ÙÀ½ÀÇ MSDN ¹®¼¸¦ Âü°íÇϱ⠹ٶõ´Ù.
Âü°í·Î ADSI ÇÁ·Î±×·¡¹Ö ÀÛ¾÷¿¡¼µµ ÀÌ¿Í ºñ½ÁÇÑ ÇüÅÂÀÇ SQL ±¸¹®À» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
|
| *** |
º»¹®ÀÇ ÀÌÀü ´Ü¶ô¿¡¼ ¼³¸íÇß´ø °Íó·³, ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½ºÀÇ ID ¼Ó¼º À̸§Àº ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀΰú µ¿ÀÏÇÑ ProcessID ·Î º¯°æµÇ¾ú´Ù.
¾Æ¸¶µµ °á±¹ ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º Ŭ·¡½º¿Í ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀΠŬ·¡½º°£ÀÇ ¼Ó¼º À̸§À» ÅëÀÏÇϱâ À§ÇÑ ¸ñÀûÀÌ ¾Æ´Ñ°¡ ÃßÃøÇØº»´Ù.
|
°á·Ð
º»¹®¿¡¼´Â IIS 7.0 ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º¿Í ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀÇ Á¤º¸¸¦ ¾ò±â À§Çؼ WMI ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ´Â ±âº»ÀûÀÎ ¹æ¹ýµéÀ» »ìÆìºÃ½À´Ï´Ù.
±×¸®°í, ÀÌ·¯ÇÑ Á¤º¸µéÀ» ¾ò±â À§Çؼ WMI InstanceOf ¸Þ¼µå¿Í WQL ÁúÀǹ®À» »ç¿ëÇÒ ¼ö ÀÖ¾ú½À´Ï´Ù.
¸¶Áö¸·À¸·Î, ¸Þ¼µå¿Í ÇØ´ç ¸Þ¼µå°¡ »ç¿ëµÇ´Â ÀÛ¾÷À» »ìÆìº¸µµ·Ï ÇϰڽÀ´Ï´Ù.:
- ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½º¿¡¼ ÇöÀç ½ÇÇàÁßÀÎ ¿äûÀ» »ìÆìº¸·Á¸é: WorkerProcess.GetExecutingRequests
- ¸ðµç ÀÛ¾÷ÀÚ ÇÁ·Î¼¼½ºÀÇ »óŸ¦ Á¶È¸ÇÏ·Á¸é: WorkerProcess.GetState
- ƯÁ¤ ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎ, ¶Ç´Â ¸ðµç ÀÀ¿ë ÇÁ·Î±×·¥ µµ¸ÞÀÎÀ» ¾ð·Îµå ÇÏ·Á¸é: AppDomain.Unload
º¸´Ù ¸¹Àº Á¤º¸¸¦ º¸½Ã·Á¸é, IIS 7.0 WMI Provider Reference ¹®¼¸¦ »ìÆìº¸½Ã±â ¹Ù¶ø´Ï´Ù. *
|
| * |
º»°ÝÀûÀ¸·Î WMI ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ¿© IIS 7.0 À» °ü¸®ÇϰíÀÚ ÇÑ´Ù¸é, º»¹®¿¡¼ ¼Ò°³Çϰí ÀÖ´Â WMI Á¦°øÀÚ ·¹ÆÛ·±½º¸¦ ÇÑ ¹øÀº ²Ä²ÄÇÏ°Ô °ËÅäÇØ º¼ Çʿ䰡 ÀÖÀ» °ÍÀÌ´Ù.
±×·¯³ª, ´Ù½Ã ÇÑ ¹ø °Á¶ÇÏÁö¸¸ º°´Ù¸¥ ¹®Á¦°¡ ¾ø°í, °ü¸®µÇ´Â ÇÁ·Î±×·¥ (.NET) À» »ç¿ëÇϴ ȯ°æÀ̶ó¸é, WMI ´ë½Å MWA ¸¦ »ç¿ëÇÏ´Â °ÍÀ» ´õ ±ÇÀåÇÑ´Ù.
ÀÌ ÁÖÁ¦¿¡ °üÇØ¼´Â ÇÊÀÚ°¡ ¹ø¿ªÇÏ¿© MSDN ¿¡ ±â°íÇÑ Microsoft.Web.Administration.dll °ü·Ã ¹®¼¸¦ Âü°íÇϱ⠹ٶõ´Ù.
|
áä
°Á ¸ñ·ÏÀ¸·Î..
|