1

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

现在我将对其进行分析,但问题是这只发生在我的生产环境中。在我的测试环境中,索引页面只需要 10ms。

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

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

4

2 回答 2

1

很难在没有细节的情况下具体,但这里有一个一般指南的镜头:

首先,我建议使用类似Firebug for Firefox 的东西——在其他浏览器中也有类似的东西,但这是我处理这类事情的旧工具。启用它并获得瀑布图的网络面板视图,该视图将向您显示页面上正在加载的每个对象的列表(您可能需要刷新) - 它还将有一个蓝色显示渲染事件(当页面变为可见的)。

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

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

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

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

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

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

对于数据库,默认情况下,MongoDB 仅记录耗时 >100 毫秒的“慢”查询 - 如果您试图通过日志跟踪低于 100 毫秒的响应时间问题,则需要对其进行调整,否则您可能会得到很少。可以这样做:

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

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

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

于 2012-07-11T08:14:16.463 回答
0

我建议你看看 Sam Saffrons Mini Profiler。如果您在您的站点中使用它,它允许您在生产环境中打开分析。

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

于 2012-07-11T08:09:31.260 回答