我在Windows Server 2012上運行IIS8的網站。我試圖確定是什麼原因導致IIS的CPU使用率過高(IIS的CPU使用率通常高達50%或更多)。服務器全天接收每秒約40個請求,但可能只需要每秒1-2個需要處理的URL。IIS8 RewriteModule/URLRewrite極其緩慢
我啓用了請求跟蹤,發現一些RewriteModule請求超過100秒(!)完成。我無法確定如何在具有足夠硬件的機器上實現這一點。完全相同的URL結構在不到一秒的時間內通過Apache上的mod_rewrite進行處理。
一個例子URL會是這樣的:
http://<domain-name>/Product/<Parent-Category>/<Child-Category1>/<Child-Category2>/<Child-Category3>/<Product-Name>
所附重寫規則是:
<rule name="Rule" stopProcessing="true">
<match url="^Product/([^/\?]+)/?([^/\?]+)?/?([^/\?]+)?/?([^/\?]+)?/?([^/\?]+)?/?([^/\?]+)?/?[\?]?(.+)?$"/>
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
</conditions>
<action type="Rewrite" url="/Product/index.php?a={R:1}&b={R:2}&c={R:3}&d={R:4}&e={R:5}&f={R:6}&{R:7}" appendQueryString="true"/>
</rule>
有什麼在我定義匹配URL的方式,是造成高處理時間?如果某些匹配的網址使用了許多父/子類別(最多5個,通常爲3-4個),則其中包含大量字符。
我貼我的變化,我上週五晚做,但我接受你的答案,因爲它表明了同樣的根本性的變化。 –