Je cours un site Web avec IIS8 sur Windows Server 2012. J'essaie de déterminer ce qui cause une utilisation élevée du processeur par IIS (fréquemment 50% ou plus d'utilisation du processeur par IIS). Le serveur reçoit environ 40 demandes par seconde au cours de la journée, mais probablement seulement 1-2 URL par seconde qui nécessitent un traitement.IIS8 RewriteModule/URLRewrite Extrêmement lent
J'ai activé Request Tracing et j'ai constaté que certaines requêtes RewriteModule prenaient plus de 100 secondes (!) À terminer. J'ai du mal à déterminer comment cela est possible sur une machine avec un matériel plus que suffisant. La même structure d'URL est traitée via mod_rewrite sur Apache en moins d'une seconde.
Un exemple d'URL serait comme ceci:
http://<domain-name>/Product/<Parent-Category>/<Child-Category1>/<Child-Category2>/<Child-Category3>/<Product-Name>
La règle de réécriture d'accompagnement est:
<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>
Y at-il quelque chose dans la façon dont je définir l'URL de correspondance qui est à l'origine de traitement élevée temps? Certaines des URL correspondantes contiennent un nombre élevé de caractères si elles utilisent plusieurs catégories parent/enfant (jusqu'à 5, généralement 3-4).
j'ai posté mes changements que j'ai fait plus tard le vendredi, mais je l'ai accepté votre réponse, car elle suggère même un changement fondamental. –