MS_ASPNETConfig - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- æ»ã
åæå®è¡æ§ãåäžãããããã®ãã©ã¡ã¿ã«ã€ããŠçºããã
ãµããªãããšä»¥äžã®æ§ã«ãªãã
-
IIS 6 以åãIIS 7 以éã®ã¯ã©ã·ãã¯ã»ã¢ãŒã
machine.config ã«èšå®ãè¡ãã -
IIS 7 以éã®ã¯ã©ã·ãã¯ã»ã¢ãŒãïŒ.NET 4 以å
MaxConcurrentRequestsPerCPU ã¬ãžã¹ããªã«èšå®ãè¡ãã -
IIS 7 以éã®çµ±åã¢ãŒã
-
.NET 3.5 以å
MaxConcurrentRequestsPerCPU ã¬ãžã¹ããªã«èšå®ãè¡ãã -
.NET 3.5 SP1 以é
aspnet.config ã«èšå®ãè¡ãã
-
è£è¶³ïŒãã®è¡šãæ¬ããŒãžã®èŠïŒ: ãã©ãã«èšå®ããããã
IIS ã®ããŒãžã§ã³ à ãã€ãã©ã€ã³ ã¢ãŒã à .NET ã®ããŒãžã§ã³ã§
å€ããããšããã®ãæ¬ããŒãžã®äž»é¡ã§ãããäžèЧã«ãããšæ¬¡ã®éãã
IIS ã¢ãŒã .NET èšå®å Žæ IIS 6 以å ïŒ 1.1 machine.configïŒprocessModelïŒIIS 6 以å ïŒ 2.0+ èªåæ§æïŒéåžžã¯å€æŽäžèŠïŒ IIS 7+ ã¯ã©ã·ã㯠ã4 以å ã¬ãžã¹ããªïŒ MaxConcurrentRequestsPerCPUïŒIIS 7+ çµ±å ã3.5 ã¬ãžã¹ã㪠IIS 7+ çµ±å 3.5 SP1 以é aspnet.configïŒapplicationPoolïŒãæã®èšäºãèŠãŠ
machine.configãããã£ããå¹ããªãã
ãšããäºæ ãèµ·ããããã®ã¯ããã®åå²ãçç±ã§ããã
çµ±åã¢ãŒãã§ã¯maxWorkerThreadsçãç¡å¹ã«ãªã
ïŒåŸè¿°ã®å€æŽç¹ïŒã
è£è¶³ïŒçŸåšã¯ããããã調æŽäžèŠãªããšãå€ãïŒ: æ¬ããŒãžã®èª¿æŽã¯
.NET Framework ã®åæåŠçãåæãšããŠããããåæåŠçã 1 ãªã¯ãšã¹ã ïŒ 1 ã¹ã¬ãããå æ â DB ãå€éš API ãåŸ ã€éãã¹ã¬ãããå¡ãã â åæå®è¡æ°ãäžããã«ã¯ã¹ã¬ããæ°ãå¢ãããããªã â æ¬ããŒãžã®ãããªãã¥ãŒãã³ã°ãå¿ èŠã«ãªã ãéåæåŠçïŒasync/awaitïŒã åŸ ã£ãŠããéã¯ã¹ã¬ãããè§£æŸãã â å°ãªãã¹ã¬ããã§å€æ°ã®ãªã¯ãšã¹ããæãã â ã¹ã¬ããæ°ã®èª¿æŽèªäœãäžèŠã«ãªãasync/await ã䜿ãããšãã
ã¹ã¬ããæ°ãå¢ããããæ¬è³ªçãªè§£æ±ºã§ããã
ASP.NET Core ã§ã¯éåæãåæã§ã
æ¬ããŒãžã«çžåœããèšå®é ç®èªäœãã»ãŒååšããªãã
IIS 6 以åãIIS 7 以éã®ã¯ã©ã·ãã¯ã»ã¢ãŒãã§ã¯ machine.config ã§
以äžã®èšå®ã䜿çšã§ããã
-
processModel èŠçŽ (ASP.NET èšå®ã¹ããŒã)
https://learn.microsoft.com/ja-jp/previous-versions/dotnet/netframework-4.0/7w2sway1(v=vs.100) -
ASP.NET ã¢ããªã±ãŒã·ã§ã³ãã Web ãµãŒãã¹èŠæ±ãè¡ããšã
ç«¶åãããã©ãŒãã³ã¹ã®äœäžãããã³ãããããã¯ãçºçãã
http://support.microsoft.com/kb/821268/ja
.NET 2.0 ã§ã¯èªåæ§æã®ããã»ã¹ ã¢ãã«ãå°å
¥ããããã
æ®ã©ã®çšéã§ãKB821268 ã«æšå¥šããã倿Žã¯äžèŠãšãããŠããã
- ASP.NET Thread Usage on IIS 7.5, IIS 7.0, and IIS 6.0
ã- Thomas Marquardt's Blog
https://learn.microsoft.com/en-us/archive/blogs/tmarq/asp-net-thread-usage-on-iis-7-5-iis-7-0-and-iis-6-0
ç¶æ³ã«å¿ã㊠machine.configãã¡ã€ã«å
ã®
以äžã®ãã©ã¡ãŒã¿ãŒã調æŽããã
- maxWorkerThreads
- minWorkerThreads
- maxIoThreads
- minFreeThreads
- minLocalRequestFreeThreads
- maxconnection
- executionTimeout
-
32 ãããã®å ŽåïŒ
%windir%\Microsoft.NET\Framework[.NET ããŒãžã§ã³]\CONFIG\machine.config -
64 ãããã®å ŽåïŒ
%windir%\Microsoft.NET\Framework64[.NET ããŒãžã§ã³]\CONFIG\machine.config
- maxWorkerThreadsãminWorkerThreadsãmaxIoThreads
ã¯ãŒã«ã»ã¹ã¬ãããI/O ã¹ã¬ããã®æå€§æ°ãå¶éããã
<processModel maxWorkerThreads="20" minWorkerThreads="10" maxIoThreads="20">-
泚ïŒå®éã®ã¹ã¬ããæ°ã¯ãäžèšå€ã«è«ç CPU æ°ãæãããããã®ã
-
泚ïŒIIS 7.0 以éã®ããŒãžã§ã³ã®çµ±åã¢ãŒãã§å®è¡ãããŠããå Žåã¯æ©èœããªãã
-
minFreeThreads ããã³ minLocalRequestFreeThreads
ç¶æããããªãŒ ã¹ã¬ããã®æå°æ°ãå¶åŸ¡ããã
<httpRuntime minFreeThreads="8" minLocalRequestFreeThreads="8">-
minFreeThreads
ã¹ã¬ãã ããŒã«å ã§ç¶æããããªãŒ ã¹ã¬ããã®æå°æ°ã
å¿ èŠãªæ°ã®ã¹ã¬ããã䜿çšã§ããªãå ŽåãèŠæ±ã¯ãã¥ãŒã«çœ®ããããŸãŸãšãªãã -
minLocalRequestFreeThreads
æ°ããããŒã«ã«èŠæ±ãå®è¡ããããã«ç¶æããããªãŒ ã¹ã¬ããã®æå°æ°ã
泚ïŒIIS 7.0 以éã®ããŒãžã§ã³ã®çµ±åã¢ãŒãã§å®è¡ãããŠããå Žåã¯æ©èœããªãã
- maxconnection
ç¹å®ã® IP ã¢ãã¬ã¹ã«å¯ŸããŠç¢ºç«ã§ããæ¥ç¶ã®æ°ãèšå®ããã
<connectionManagement>
<add address="*" maxconnection="2">
<add address="65.53.32.230" maxconnection="12">
</connectionManagement>- executionTimeout
èŠæ±ã®å®è¡æéãå¶éããã
<httpRuntime executionTimeout="90"/>è£è¶³ïŒ
maxconnectionã¯çŸåšãå¹ãïŒæéèŠïŒ: äžèšã®ãã¡ã
maxconnectionã ãã¯çµ±åã¢ãŒãã§ã .NET 4.x ã§ãæå¹ã§ããã
çŸåšãå®åã§ãããèšå®ã§ãããæ¢å®å€ã¯ã2ãïŒHTTP/1.1 ã® RFC ç±æ¥ïŒ â åäžãã¹ããžã®åææ¥ç¶ã 2 æ¬ã«å¶éããã â Web API ã倧éã«åŒã¶ãšããããããã«ããã¯ã«ãªã â [async/await](MS_AsyncAwait) ã«ããŠãéããªããªãããšããçŸè±¡<system.net> <connectionManagement> <add address="*" maxconnection="100" /> </connectionManagement> </system.net>// ã³ãŒããããèšå®ã§ããïŒèµ·åæã« 1 床ã ãïŒ ServicePointManager.DefaultConnectionLimit = 100;.NET Core / .NET ã§ã¯æ¢å®å€ãäºå®äžæ€å»ãããŠãã
ïŒSocketsHttpHandler.MaxConnectionsPerServerã®æ¢å®ãint.MaxValueïŒã
ãã®åé¡ã¯èµ·ããªãã
.NET Framework ããç§»è¡ããåæ©ã®äžã€ã§ãããããªãã
HttpClientã䜿ãå Žåã¯
HttpClientã䜿ãåãïŒIHttpClientFactoryïŒããšãéèŠã§ãã
ïŒæ¯ånewãããšãœã±ããæ¯æžãèµ·ããïŒã
詳现㯠HttpClientã®é¡ã®äœ¿ãæ¹ ãåç §ã
-
åãã©ã¡ã¿ã®æšå¥šèšå®å€
NïŒç©ç CPU ã®æ°ã§ã¯ãªããè«ç CPU ã®æ°- maxWorkerThreadsãmaxIoThreads
å€ã 100 ã«èšå®ïŒæ¢å®å€ã¯ 20ïŒ - minWorkerThreads
å€ã 50 ã«èšå®ïŒæ¢å®ã§ã¯ååšããªããã远å ãå¿ èŠãæ¢å®å€ã¯ 1ïŒ - minLocalRequestFreeThreads
76*N ã«èšå®ïŒæ¢å®å€ã¯ 4ïŒ - minFreeThreads
å€ã 88*N ã«èšå®ïŒæ¢å®å€ã¯ 8ïŒ - maxconnection
å€ã 12*N ã«èšå®ïŒæ¢å®å€ã¯ ?ïŒ
- maxWorkerThreadsãmaxIoThreads
-
ç«¶ååæžã®ããã®æšå¥šã¹ã¬ããåŠçèšå®
第 17 ç« ã.NET ã¢ããªã±ãŒã·ã§ã³ ããã©ãŒãã³ã¹ã®ãã¥ãŒãã³ã°ã
https://learn.microsoft.com/en-us/previous-versions/msp-n-p/ff647813(v=pandp.10)
| æ§æèšå® | èŠå®å€ (.NET 1.1) | æšå¥šå€ |
|---|---|---|
| maxIoThreads | 20 | 100 |
| maxWorkerThreads | 20 | 100 |
| minFreeThreads | 8 | 88*N |
| minLocalRequestFreeThreads | 4 | 76*N |
| maxconnection | 2 | 12*N |
- èšå®äŸ
CPUÃ4 ã§ãã€ã㌠ã¹ã¬ããã£ã³ã°ãæå¹ã«ãªã£ãŠããå ŽåïŒN=8ïŒã
<system.web>
<processModel maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50"/>
<httpRuntime minFreeThreads="704" minLocalRequestFreeThreads="608"/>
</system.web>
<system.net>
<connectionManagement>
<add address="[ProvideIPHere]" maxconnection="96"/>
</connectionManagement>
</system.net>è£è¶³ïŒãã®æšå¥šå€ã¯ .NET 1.1 æä»£ã®ãã®ïŒ: 衚ã®èŠåºãã瀺ãéãã
.NET 1.1ã®æ¢å®å€ã«å¯Ÿããæšå¥šã§ããã
çŸåšã®ç°å¢ã«ãã®ãŸãŸé©çšããŠã¯ãªããªããã».NET 2.0 以éã¯èªåæ§æãå ¥ããæ¢å®å€èªäœãå€ãã£ãŠãã ã»IIS 7 çµ±åã¢ãŒãã§ã¯ maxWorkerThreads / minFreeThreads ãç¡å¹ ã»minFreeThreads ã倧ãããããããšã ã空ãã確ä¿ããããã«èŠæ±ããã¥ãŒã«æºãããåäœã«ãã ããã£ãŠã¹ã«ãŒããããèœã¡ãçŸåšã®æéã¯ã
- ãŸãèšæž¬ããïŒäžèšã®ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒïŒ
- åæåŠçãéåæåããïŒasync/awaitïŒ
- ããã§ãè¶³ããªããã°
maxConcurrentRequestsPerCPUã調æŽãšããé åºã«ãªãã
ã«ãŠã³ã¿ãŒ èŠããã® ASP.NET\Requests CurrentåŠçäž + ãã¥ãŒ ASP.NET\Requests Queuedãã¥ãŒã«æºãŸã£ãŠããã ASP.NET Apps\Requests/Secã¹ã«ãŒããã .NET CLR LocksAndThreads\Contention Rateããã¯ç«¶å Process\Thread Countã¹ã¬ããæ°
MaxConcurrentRequestsPerCPU èšå®ïŒäžèšã®ã¬ãžã¹ããªèšå®ïŒã
䜿çšããŠãã ããã
IIS 7 以éã®çµ±åã¢ãŒãïŒ.NET 3.5 以åã§ã¯ä»¥äžã®ã¬ãžã¹ããªèšå®ã䜿çšã§ããã
- IIS 7 ã§ã® ASP.NET 2.0 ã®äºææ§ã«åœ±é¿ãã倿Žç¹
https://learn.microsoft.com/ja-jp/previous-versions/technet-magazine/ff454090(v=msdn.10)
çµ±åã¢ãŒãã§ã¯ãASP.NET ã¹ã¬ããèšå®ã䜿çšããŠèŠæ±ã®åæå®è¡æ§ãå¶åŸ¡ã§ããªãã
- processModel æ§æã»ã¯ã·ã§ã³ã®
- maxWorkerThreads èšå®
- system.web/httpRuntime æ§æã»ã¯ã·ã§ã³ã®
- minFreeThreads ãš minLocalRequestFreeThreads èšå®ã
ã¯ãASP.NET ã§äœ¿çšãããã¹ã¬ãã ã¡ã«ããºã ãå¶åŸ¡ããªããªããŸããã
è£è¶³ïŒãªãå¹ããªããªã£ãã®ãïŒ: çµ±åã¢ãŒãã§ã¯
ASP.NET ãç¬èªã®ã¹ã¬ãã ããŒã«ãæããªããªã£ãããã§ããããã¯ã©ã·ã㯠ã¢ãŒãã IIS(w3wp) ââISAPIââ> aspnet_isapi.dll â ASP.NET ç¬èªã®ã¹ã¬ãã ããŒã« ïŒããã machine.config ã§å¶åŸ¡ããŠããïŒ ãçµ±åã¢ãŒãã IIS(w3wp) ã®ãã€ãã©ã€ã³ã« ASP.NET ãçµã¿èŸŒãŸãã â IIS ã®ã¹ã¬ãã ããŒã«ããã®ãŸãŸäœ¿ã â ASP.NET åŽã®èšå®ã¯æå³ãæããªããã㯠ASP.NET Coreã®WebãµãŒã ã§è¿°ã¹ã
ã€ã³ããã»ã¹ ãã¹ãã£ã³ã°ã®å ç¥ã«ãããæ§é 倿Žã§ããã
ãASP.NET ã IIS ã®ãã€ãã©ã€ã³ã«æº¶ãã蟌ãããšããæ¹åã¯ã
ASP.NET Core ã®ã€ã³ããã»ã¹ ãã¹ãã£ã³ã°ãŸã§äžè²«ããŠããã
ãã®ä»£ãããASP.NET 㯠IIS ã¹ã¬ãã ããŒã«ã«äŸåãã
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0 ããŒå
ã®
- MaxConcurrentRequestsPerCPU ã® DWORD å€ (æ¢å®å€ã¯ 12)
ãèšå®ããããšã§ãåæå®è¡èŠæ±ã®æå€§æ°ãå¶åŸ¡ã§ããããã«ãªããŸããã
ãã®èšå®ã¯ã°ããŒãã«ãªã®ã§ã
- ã¢ããªã±ãŒã·ã§ã³ ããŒã«ã
- ã¢ããªã±ãŒã·ã§ã³ããšã«
倿Žããããšã¯ã§ããŸããã
IIS 7 以éã®çµ±åã¢ãŒãïŒ.NET 3.5 SP1 以éã§ã¯ aspnet.config ã§
以äžã®èšå®ã䜿çšã§ããã
â» Manual äžã¯ã.NET 4 以éã«ãªã£ãŠããããå®é㯠.NET 3.5 SP1 ããæ¡çšãããŠããã
- Web èšå®ã¹ããŒã
https://learn.microsoft.com/ja-jp/previous-versions/dotnet/netframework-4.0/dd560844(v=vs.100)- system.web èŠçŽ (Web èšå®)
https://learn.microsoft.com/ja-jp/previous-versions/dotnet/netframework-4.0/dd560839(v=vs.100)- applicationPool èŠçŽ (Web èšå®)
https://learn.microsoft.com/ja-jp/previous-versions/dotnet/netframework-4.0/dd560842(v=vs.100)
- applicationPool èŠçŽ (Web èšå®)
- system.web èŠçŽ (Web èšå®)
ASP.NET ã¢ããªã±ãŒã·ã§ã³ã
IIS 7.0 以éã®ããŒãžã§ã³ã®çµ±åã¢ãŒãã§å®è¡ãããŠããå Žåã«ã
ããã»ã¹å
šäœã®åäœã管çããããã« ASP.NET ã§äœ¿çšãããæ§æèšå®ãæå®ããŸãã
- IIS 6 ãå®è¡ããå Žåãã
- IIS 7.0 ãã¯ã©ã·ã㯠ã¢ãŒã
- ãŸã㯠ISAPI ã¢ãŒãã§å®è¡ããå Žåã¯ã
ãããã®èšå®ã¯ç¡èŠãããŸãã
- 32 ãããã®å ŽåïŒ
%windir%\Microsoft.NET\Framework[.NET ããŒãžã§ã³]\aspnet.config - 64 ãããã®å ŽåïŒ
%windir%\Microsoft.NET\Framework64[.NET ããŒãžã§ã³]\aspnet.config
- applicationPool èŠçŽ ã®å±æ§
-
maxConcurrentRequestsPerCPU
- ASP.NET ã§èš±å¯ãã CPU ãããã®åæèŠæ±æ°ãæå®ããã
- .NET 4 ã§ã®æ¢å®ã®èšå®ã¯ "5000"
-
maxConcurrentThreadsPerCPU
- å CPU ã®ã¢ããªã±ãŒã·ã§ã³ ããŒã«ã§å®è¡ã§ããã¹ã¬ããæ°ãæå®ããã
- æ¢å®ã®èšå® 0 ã¯ãCPU ãããã®äœæå¯èœãªã¹ã¬ããæ°ãå¶éããªãã
- ãã ããäœæå¯èœãªã¹ã¬ããæ°ã«ã¯ãCLR ã®ã¹ã¬ãã ããŒã«ã«ããå¶éãé©çšãããã
-
requestQueueLimit
- ASP.NET ã®ãã¥ãŒã«é 眮ã§ããèŠæ±ã®æå€§æ°ãæå®ããã
- è€æ°ã® ASP.NET ã¢ããªã±ãŒã·ã§ã³ã 1 ã€ã®ã¢ããªã±ãŒã·ã§ã³ ããŒã«ã§ãã¹ãããå Žåã
ãã®ã¢ããªã±ãŒã·ã§ã³ ããŒã«ã«å¯ŸããèŠæ±ã®çŽ¯ç©æ°ãå¶éããããã«äœ¿çšããã - .NET 4 ã§ã®æ¢å®ã®èšå®ã¯ "5000"
-
æ¢å®å€
<configuration>
<system.web>
<applicationPool
maxConcurrentRequestsPerCPU="5000"
maxConcurrentThreadsPerCPU="0"
requestQueueLimit="5000" />
</system.web>
</configuration>è£è¶³ïŒ.NET 4 ã§æ¢å®å€ãå€§å¹ ã«ç·©åãããïŒ: æ¢å®å€ã®å€é·ã
éèŠãªã®ã§è£ã£ãŠããã
.NET 3.5 以å .NET 4 以é maxConcurrentRequestsPerCPU12ïŒã¬ãžã¹ããªïŒ 5000 æ³å® åæåŠçãäžå¿ éåæåŠçãæ³å®
12ãã5000ãžã®å€æŽã¯ã
ã.NET 4 ã§éåæåŠçïŒTAPïŒãæŽãã
ã¹ã¬ãããå æããªãåæã«åãæ¿ãã£ããããšãåæ ããŠããããã®ããã.NET 4 以éã§ã¯éåžžãã®å€ãè§Šãå¿ èŠãç¡ãã
è§Šããšããã°ã
- åæçã«ãããã¯ããåŠçãå€ããæå³çã«çµãããïŒéè² è·ä¿è·ïŒ
- ã¹ã¬ãã ããŒã«ã®é£¢é€ãèµ·ããŠããããã¥ãŒãå¶éããã
ãšãã£ãå Žåã«éãããã
ASP.NET Core ã§ã®å¯Ÿå¿ç©ã¯æ¬¡ã®éãã
ç®ç ASP.NET Core åææ¥ç¶æ°ã®å¶é KestrelServerLimits.MaxConcurrentConnectionsåæå®è¡ã®å¶åŸ¡ ConcurrencyLimiterããã«ãŠã§ã¢ / ã¬ãŒãå¶éïŒ.NET 7+ïŒãã¥ãŒã®å¶é åäžïŒ QueueLimitïŒ// .NET 7 以éã®ã¬ãŒãå¶é builder.Services.AddRateLimiter(o => o.AddConcurrencyLimiter("api", opt => { opt.PermitLimit = 100; opt.QueueLimit = 50; }));
ApplicationHost.config ã«ããmachine.configãšåæ§ã«
processModel ã¿ã°ããããã
machine.configã® processModel ã¿ã°ãšã¯ç°ãªãã
åæå®è¡å¶åŸ¡ã«é¢ããèšå®ã¯ååšããªãã
- applicationPool ã®ãªãµã€ã¯ãªã³ã°ãªã©ã®èšå®ãã§ããã
- åæå®è¡å¶åŸ¡ã«é¢ããèšå®ïŒmaxWorkerThreads çïŒã¯ååšããªãã
%windir%\system32\inetsrv\config\ApplicationHost.config
ç§»è¡ã¡ã¢ïŒè¡šèšïŒ: åæã®ãã¹ã¯å šè§çå笊ïŒ
?ïŒã§åºåããã
ãã¡ã€ã«åããApplcationHost.configããšç¶Žãã誀ã£ãŠããããã
%windir%\system32\inetsrv\config\ApplicationHost.configã«ä¿®æ£ããã
- ã¢ããªã±ãŒã·ã§ã³ ããŒã«ã®ããã»ã¹ ã¢ãã«èšå® processModel
https://learn.microsoft.com/en-us/iis/configuration/system.applicationhost/applicationpools/add/processmodel
applicationPool ã®ãªãµã€ã¯ãªã³ã°ãªã©ã®èšå®ãã§ããã
<applicationPools>
<add name="DefaultAppPool" autoStart="true" />
<add name="Classic .NET AppPool" managedPipelineMode="Classic" />
<add name="MyAppPool" autoStart="true" managedPipelineMode="Integrated" />
<applicationPoolDefaults>
<processModel identityType="ApplicationPoolIdentity" />
</applicationPoolDefaults>
</applicationPools>è£è¶³ïŒæ§èœã«å¹ãã®ã¯ããããã¡ãïŒ: åæå®è¡æ°ããã
ã¢ããªã±ãŒã·ã§ã³ ããŒã«ã®ãªãµã€ã¯ã«èšå®ã®æ¹ã
å®åã§ã¯åé¡ã«ãªããããã
èšå® æ¢å® 泚æç¹ idleTimeout20 å ã¢ã¯ã»ã¹ãç¡ããšããã»ã¹ãèœã¡ã次åãé ã 宿ãªãµã€ã¯ã«ïŒ periodicRestart/timeïŒ29 æé æ¯æ¥ãããæå»ã«åèµ·åããïŒæå³ããªãæïŒ startModeOnDemand AlwaysRunningã§åžžé§ãããããidentityTypeApplicationPoolIdentity DB ãžçµ±åèªèšŒãããªãèŠæ€èš **ãããŸã«ååã¢ã¯ã»ã¹ã極端ã«é ãã**ãšããçç¶ã¯ã
ã»ãŒidleTimeoutã«ããããã»ã¹çµäºãåå ã§ããã<add name="MyAppPool" startMode="AlwaysRunning"> <processModel idleTimeout="00:00:00" /> <!-- ç¡å¹å --> <recycling> <periodicRestart time="00:00:00"> <!-- æéã§ã®åèµ·åãç¡å¹å --> <schedule><clear /><add value="03:00:00" /></schedule> <!-- æ·±å€ã«åºå® --> </periodicRestart> </recycling> </add>䜵ã㊠Application InitializationïŒäºåãŠã©ãŒã ã¢ããïŒã
æå¹ã«ãããšãåèµ·ååŸã®ååã¢ã¯ã»ã¹ãéãã§ããã
çµ±åã¢ãŒãã§ã¯ ASP.NET ã¢ããªã±ãŒã·ã§ã³ ãã¥ãŒã䜿çšãããªãã®ã§ã
ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒïŒ"ASP.NET Applications\Requests in Application Queue"
ã®å€ãåžžã« 0 ã«ãªã
è£è¶³: çµ±åã¢ãŒãã§èŠãã¹ãã«ãŠã³ã¿ãŒã¯
ASP.NET\Requests QueuedïŒã¢ããªã±ãŒã·ã§ã³åäœã§ã¯ãªãå šäœïŒã§ããã
ããã¥ãŒã 0 ã ããåé¡ãªãããšèª€èªããªãããæ³šæããã
IIS 7 㯠Web.config ãã¡ã€ã«ã® ASP.NET 倿Žéç¥èšå®ã«é¢ä¿ãªãã
Web.config ãã¡ã€ã«ãç£èŠããããã倿Žããããšã
åžžã« ASP.NET ã¢ããªã±ãŒã·ã§ã³ãåèµ·åããããã
system.web/httpRuntime æ§æã»ã¯ã·ã§ã³ã®
- waitChangeNotification
- maxWaitChangeNotification
屿§ã®å¹æããªãã
è£è¶³ïŒåèµ·åãåŒãèµ·ãããã®ïŒ:
web.config以å€ã«ãã
ã¢ããªã±ãŒã·ã§ã³ ãã¡ã€ã³ã®åèµ·åãåŒãèµ·ããæäœã¯å€ãã
æäœ åèµ·å web.configã®å€æŽããïŒæ¬ç¯ïŒ binå ã® DLL ã®å€æŽãã App_Code/Global.asaxã®å€æŽãã ãµããã©ã«ãã®åé€ ããïŒæå€ãªèœãšãç©ŽïŒ App_Dataå ã®ãã¡ã€ã«å€æŽããªã åèµ·åããããšãInProc ã»ãã·ã§ã³ãå šæ¶å€±ããããã
ãæ¬çªã§web.configã 1 è¡çŽããããã°ã€ã³äžã®ãŠãŒã¶ãŒãå šéšèœã¡ãã
ãšããäºæ ã«ã€ãªããã察çã¯ã
- ã»ãã·ã§ã³ã StateServer / SQL Server ã«å€ã
ïŒASP.NET Coreã®åæ£ãã£ãã·ã¥ ã®
ASP.NET çã«ãããïŒ- èšå®å€æŽããªãªãŒã¹æé ã«çµã¿èŸŒãïŒæ¬çªã§çŽæ¥ç·šéããªãïŒ
ãšããéçšé¢ã®æŽåã«ãªãã
- ASP.NET æ§æãã¡ã€ã«ã®éå±€ãšç¶æ¿
https://learn.microsoft.com/ja-jp/previous-versions/aspnet/ms178685(v=vs.100) - ASP.NET Core ã§ã®ããã©ãŒãã³ã¹ã®ãã¹ã ãã©ã¯ãã£ã¹
https://learn.microsoft.com/ja-jp/aspnet/core/performance/performance-best-practices - ASP.NET Core ã®ã¬ãŒãå¶éããã«ãŠã§ã¢
https://learn.microsoft.com/ja-jp/aspnet/core/performance/rate-limit
Tags: ç§»è¡, .NETéçº, ASP.NET