我正在对我的GAE / J应用程序运行两个不同的负载测试。
Loadtest#1(LT1):每2秒调用/ rest / cheap1,每60秒调用/ rest / cheap2
Loadtest#2(LT2):除了LT1的URL之外,每个用户还会调用四个不同的URL / rest / expensive {1,2,3,4}。这些URL中的每一个大约每60秒调用一次。
两个负载测试都是
网址的主要区别在于延迟。平均而言,潜伏期为
运行LT1时,GAE仅启动少数实例,并在每个实例上放置 70 requests / s 。在LT2中添加/ rest /昂贵的{1,2,3,4}之后,GAE启动的实例数量明显增加,并且每个实例只放置 5-7个请求/ s ,从而导致成本增加。
如何使用更少的实例?有没有办法利用最常用的操作/休息/ cheap1的小延迟?有很多settings for the GAE scheduler,例如最小/最大挂起延迟,最小/最大空闲实例,实例类。 在这种情况下,我如何利用它们?
/ rest / expensive {1,2,3,4}的延迟更改如何影响实例计数?例如。如果响应时间减半,GAE会启动一半的实例?
如何通过设置min来影响实例计数。等待延迟到> = 600毫秒?
更新
答案 0 :(得分:1)
在我的测试中,我完成了所有优化并使用外部页面检查程序进行了测量,发现Google App Engine中单个最大的延迟来自第一个字节服务器,您的python实例并非“温暖”。
实际进行开发而不是预先编写的测试以减少延迟时的一些技巧
为了让您的测试表现更好,我建议您查看测试是如何编写的,以及它是否测试您要测试的内容。
当你的python实例启动它会更快,它是我的测试中第一个字节慢。
答案 1 :(得分:0)
要减少实例数,您有以下几种选择:
减少代码的内存和CPU使用率,以便更多的执行适合给定的实例。我不会详细说明,因为根据您的问题,我了解您不想修改您的代码。
在App Engine控制台中,减少“最大空闲实例数”参数。这些实例由App Engine保留以处理负载峰值。如果您可以在加载加载期间增加延迟,则可以减少实例数。
在App Engine控制台中,增加“min pending latency”参数。此参数决定App Engine调度程序在决定启动新实例以满足您的请求之前等待的时间。它越高,旋转的实例就越少。但是,当然,您的请求的延迟会增加。
所有这些选择都是权衡取舍。在保持延迟不变的情况下,您将无法减少实例数。
请注意,“min pending latency”是不请求的完整延迟。只有在等待服务可用实例时请求在队列中花费的时间。它没有考虑服务请求的实际时间(例如,数据存储调用)。
Check this article for a better understanding of how App Engine handles scalability。我特别推荐最佳实践表,以便更好地理解App Engine控制台中可用的性能参数。我将在下面复制它: