2011-05-16 87 views
2

我使用Lucene.Net进行搜索的网站随着时间的推移逐渐变慢。我已经设置了IIS以1.5GB的容量回收应用程序池。随着时间的推移,ASP.NET应用程序越来越慢使用Lucene.Net

回收后,应用程序又快了。

什么是诊断搜索的哪些部分导致问题的最佳步骤?

值得注意的是,这绝对是导致问题的搜索,因为它只是应用程序的这部分缓慢。普通页面可以正常加载,无论时间如何。

+0

与此同时,您可以更频繁地回收,以便您的用户不会注意到。 – 2011-05-16 21:38:24

+0

您正在使用哪个版本的Lucene? – Kane 2011-05-16 21:44:37

+0

@Kane 2.9.2.2是版本 – izip 2011-05-16 21:53:53

回答

0

如果你已经分析了你的搜索代码,它太复杂或者不太明显,速度有多慢,我会先运行性能监视器(perfmon.exe)并记录结果。查看CPU使用率,内存,磁盘队列,ASP.Net特定计数器(请求排队,请求/秒)和CLR计数器(管道实例计数,抛出异常,上下文切换/秒等)中的更改。

一旦你可以把一些看起来不寻常的事情(随着时间的推移而不再受到检查)加入,你可以开始缩小任何代码问题。

+0

不能在搜索代码中找到任何东西,因此头部有划痕。 使用perfmon,我究竟会在找什么?我在应用程序中记录所有异常,所以我不认为有bug,只是一些未发布的对象或类似的东西。 会使用类似点追踪的东西是一个更好的工具? – izip 2011-05-16 21:40:45

0

您是否在大更新后优化您的索引?这可以真正提高性能。

+0

我发现了什么导致它。这是绑定我的过滤器/方面。 我诊断它是通过创建一个脚本来请求页面100次,然后逐个删除组件并观看IIS应用程序池中的内存。一旦我删除了方面,它很好。只需要现在以不同的方式做到这一点,一切都会很好! – izip 2011-05-17 16:45:01