我正在针对我的GAE/J应用程序运行两个不同的负载测试。在
Loadtest 1(LT1):每2秒调用/rest/cheap1,每60秒调用/rest/cheap2
Loadtest#2(LT2):除了LT1的url之外,每个用户还调用四个不同的url/rest/priced{1,2,3,4}。这些url大约每60秒调用一次。
两个负载测试
URL的主要区别在于延迟。平均来说
当运行LT1时,GAE只启动少数实例,并且每个实例上的请求数高达70个。在LT2中添加/rest/expense{1,2,3,4}之后,GAE启动了更多的实例,并且只在每个实例上放置5-7个请求/s,从而导致成本增加。在
如何使用较少的实例?是否有办法利用最频繁操作/休息/便宜1的延迟?有很多settings for the GAE scheduler,例如min/max挂起延迟、min/max空闲实例、实例类。在这种情况下,我如何利用这些优势?>
对于/rest/prise{1,2,3,4}的延迟更改如何影响实例计数?例如,如果响应时间减半,GAE启动实例的一半?
将min.pending latency设置为>;=600毫秒,实例计数会受到什么影响?>
更新:
减少实例数
要减少实例数,您有几个选项:
减少内存和CPU占用
减少代码的内存和CPU使用量,以便在给定实例上执行更多的操作。我不会继续下去,因为从你的问题我知道你不想修改你的代码。在
减少空闲实例的最大数量
在AppEngine控制台中,减少“最大空闲实例数”参数。这些实例由appengine保存以处理加载pikes。如果您不介意在加载pikes期间增加延迟,那么可以减少实例的数量。在
使请求等待可用实例
在appengine控制台中,增加“min pending latency”参数。此参数决定appengine调度程序在决定启动新实例以满足您的请求之前等待的时间。它越高,旋转的实例就越少。但当然,您的请求的延迟会增加。在
关于GAE可伸缩性的进一步讨论
所有这些选择都是权衡的。您将无法在保持延迟不变的情况下减少实例数。在
注意,“min pending latency”是而不是请求的完整延迟。它只是请求在等待可用实例被服务时在队列中花费的时间。它没有考虑实际服务请求所需的时间(例如数据存储调用)。在
Check this article for a better understanding of how App Engine handles scalability。为了更好地理解appengine控制台中可用的性能参数,我特别推荐使用最佳实践表。我将在下面复制:
在我的测试中,我做了所有的优化,并用一个外部页面检查器进行了测量,结果发现googleappengine中最大的延迟来自第一个字节服务器,python实例并不“温暖”。在
在实际进行开发而不是预先编写测试以减少延迟时,一些技巧是
为了使您的测试执行得更好,我建议您看看测试是如何编写的,以及它是否测试了您想要测试的内容。在
当您的python实例启动时,它会快得多,在我的测试中,第一个字节速度较慢。在
相关问题 更多 >
编程相关推荐