如何配置我的生产Web应用程序?

时间:2012-07-11 07:47:33

标签: asp.net mongodb mono profiling mod-mono

我有一个博客。最近,我注意到了一些性能问题。我的索引页面等待时间大约为400毫秒。我觉得这很高。当我第一次部署它(功能较少,但仍然)时,我记得索引加载时间大约是80ms。

现在我会对它进行分析,但问题是这只发生在我的生产环境中。在我的测试环境中,索引页只需要10毫秒。

如何分析我的生产应用程序?我在Arch Linux上使用Apache + mono + mod_mono和MongoDB。除了使用xsp之外,我有一个类似的测试环境。

我不确定在哪里看:我的代码,Apache的配置还是MongoDB?如何分析我的生产服务器以找出为什么它比我的开发环境慢得多?

2 个答案:

答案 0 :(得分:1)

在没有细节的情况下具体要具体,但这里只是一般指南:

首先我建议在Firefox上使用类似Firebug的东西 - 在其他浏览器中也有等价物,但这是我用来做这种事情的旧工具。启用它并获得瀑布图的Net Panel视图,该视图将显示页面上加载的每个对象的列表(您可能必须刷新) - 它还将显示渲染事件的蓝色(当页面变为可见)。

瀑布应该非常明显地显示页面缓慢的部分,并且可以使用这些信息进入下一阶段 - 找出特定部分缓慢的原因。

如果插件不是你的东西,或者你怀疑它可能是导致问题的机器本地的东西,那么看看:http://www.webpagetest.org/

这将使您能够从不同位置,不同浏览器,速度等进行远程测试,并为您提供类似的详细结果。

如果它是一个正在获取的静态文件,请查看网络问题,Apache是​​一个原因。如果它是动态生成的,那么请查看Apache,ASP,mongodb等。

对于Apache,访问日志所说的是索引页面的响应时间?假设Apache 2或更新版本,请确保您已记录%D(以及%T,如果您愿意),以便您可以在所需的级别上查看为页面提供服务所花费的时间(从Apache角度来看)细节。有关详细信息,请查看LogFormat directive

我无法帮助ASP / Mono方面,而不是我的东西,但是在各个点添加调试语句来跟踪索引页面生成(假设它是动态生成的)将是一种非常标准的方法。

对于数据库,MongoDB默认只记录“慢”查询,大约需要100毫秒 - 如果你试图通过日志追踪一个低于100毫秒的响应时间问题,你需要调整它,否则你可能会得到很少。这可以按如下方式完成:

> db.setProfilingLevel(0,20) // leave profiling off, slow threshold=20ms

您还可以将其作为启动参数(--slowms)调整为mongod进程。有关分析的更多信息,可能也有帮助但有开销,可以在这里找到:

http://www.mongodb.org/display/DOCS/Database+Profiler

答案 1 :(得分:0)

我建议你看一下Sam Saffrons Mini Profiler。如果您在自己的网站中使用它,则可以打开生产分析。

通过在代码中添加足够的工具,您应该能够识别哪个位花费时间,然后将精力集中在那里。