如何确定性能下降的原因?

时间:2011-11-23 17:55:30

标签: google-app-engine

我正在使用GAE并制作了一个非常紧凑的应用程序,它可以获得微小的请求并以恒定的速率输出微小的响应(来自使用cURL和循环的程序)。

它不是在处理用户界面,也不是要从浏览器调用,它只是接收POST请求,进行一些处理并以ASCII文本形式输出光数据。

我设法优化了我的应用程序,以便平均延迟通常为20-30毫秒,并且它一直运行良好到目前为止,单个实例可能很容易管理每秒十几个查询,因为它非常低等待时间。

然而今天早上大约40分钟,性能下降幅度很大,应用程序开始需要20,000到30,000毫秒才能处理请求,请参阅此处:http://i.imgur.com/OWQdd.png。 GAE应用程序代码在此期间未被更改,也没有更改发出请求的程序。

我怎么知道这是什么原因以及将来是否会再次发生? 我检查了日志,没有看错,也无法与Google联系。

我的应用对延迟非常敏感,所有请求都应该尽快处理,当然不到1秒。

我在应用程序的“管理”面板中将Min Pending Latency设置为10ms,但有没有办法减少请求的最大超时?我认为默认是60秒。


编辑:以下是other charts我们可以看到“API调用CPU”和“活动实例”的情况,但我不知道这是怎么告诉我出了什么问题......


Edit2:以下是在问题期间发生的请求的一些日志条目:

69.165.137.199 - - [23/Nov/2011:06:56:11 -0800] "POST / HTTP/1.1" 200 287 - - "app.appspot.com" ms=36378 cpu_ms=258 api_cpu_ms=98 cpm_usd=0.007259 instance=00c61b117cd98a4e8f9d6c0215d5e14c3336
69.165.137.199 - - [23/Nov/2011:06:55:32 -0800] "POST / HTTP/1.1" 200 287 - - "app.appspot.com" ms=34584 cpu_ms=125 api_cpu_ms=98 cpm_usd=0.003555 instance=00c61b117cd98a4e8f9d6c0215d5e14c3336

2 个答案:

答案 0 :(得分:2)

以下是一些尝试:

  • 尝试以不同的名称再次部署它(使其成为新的默认名称)并查看性能是否恢复。如果确实如此,那么可能会有某些因素导致它在运行时减速。
  • 检查数据存储区的大小。在使用大型数据集进行测试时,您可能会遇到一些查询速度很慢的问题。
  • 下载appstats here is a tutorial并按照本指南进行效果分析
  • 如果您使用的是memcache,请检查是否从中返回数据而不是执行其他数据存储查询
  • 如果您正在使用任务队列,请确保没有卡住。您可以从管理页面手动运行它们。

答案 1 :(得分:1)

您是否从日志中检查了时间?在CPU,待处理状态还是在API中?根据我的经验,数据存储区有时会在没有明显原因的情况下这样做,因此您的应用程序不一定有任何问题。如果稳定延迟很重要,请尝试高复制数据存储,尽管它具有稍高的最小延迟。