我的网站上的内存使用情况会导致我的Windows服务器每10分钟回收一次。内存通常是140mb,但突然间它跳到600mb或更多,网站需要重新编写。我在web.config文件中有以下条目,以阻止机器人攻击我的网站。但是,我收到filteringRules行的语法错误,虽然我的网站运行正常,更新的web.config文件。我注意到一些机器人仍然出现在我的http日志中,我想知道我的过滤器是否正常工作。有没有人看到这个代码有问题,或者它是否真的工作,尽管我在Visual Studio中遇到语法错误?此外,所有这些机器人都会导致内存峰值吗?
<requestFiltering>
<filteringRules> !-- this line gives me a syntax error
<filteringRule name="BlockSearchEngines" scanUrl="false"
scanQueryString="false">
<scanHeaders>
<clear />
<add requestHeader="User-Agent" />
</scanHeaders>
<appliesTo>
<clear />
</appliesTo>
<denyStrings>
<clear />
<add string="AhrefsBot" />
<add string="MJ12bot" />
<add string="ExtLinksfBot" />
<add string="Yeti" />
<add string="YandexBot" />
<add string="SemrushBot" />
<add string="DotBot" />
<add string="istellabot" />
<add string="Qwantify" />
<add string="GrapeshotCrawler" />
<add string="archive.org_bot" />
<add string="Applebot" />
<add string="ias_crawler" />
<add string="Uipbot" />
<add string="Cliqzbot" />
<add string="TinEye-bot" />
<add string="YandexImages" />
</denyStrings>
</filteringRule>
</filteringRules>
答案 0 :(得分:0)
您的<filteringRules>
条目的语法看起来正确(结束标记错字除外)。
由于某些原因,Visual Studio使用的web.config架构似乎未包含filteringRules
。但是,该架构独立于IIS知道和执行的操作,因此没有关系。
而且,所有这些漫游器都会导致内存峰值吗?
仅仅因为来自机器人的请求不会占用大量内存。意外的内存高峰通常是应用程序错误-内存泄漏等。您可以使用内存分析器查看应用程序的内存使用情况。常见的原因是分配内存缓冲区,然后将对它们的引用存储在全局变量/集合中。未能对所有一次性对象调用Dispose()
是另一个潜在的泄漏源。