使用Google App Engine进行网站负载测试
Azure、Amazon 以及其他基于实例的云服务提供商可以用来进行网站负载测试,也就是可以启动很多实例,运行程序向一组网址发送请求。我在想,能不能在 Google App Engine 上做到这一点。
不过到目前为止,似乎并不行。我能想到的唯一方法就是设置最多的定时任务(cron jobs),让它们以最高频率执行。每个任务请求一堆网址,同时再往 任务队列里放入更多的任务。
根据我的计算,这样最多只能同时发起 25 个请求,因为一个应用最多可以有 20 个定时任务,而且每个任务的执行频率不能超过每分钟一次,默认的队列每秒只能处理 5 个任务。
有没有什么办法可以让我以自动化的方式发起更多的并发请求来获取网址呢?
2 个回答
对一个公开网址进行负载测试,可能没有直接连接到和你目标服务器同一个交换机上的机器来得准确。因为网络环境有很多不可控的因素。
根据你的具体情况,我建议借几台桌面电脑来进行测试,使用它们会更好。任何一台性能还不错的机器,应该都能每分钟发出2000到3000个请求。
不过,这真的要看你想要达到的测试规模。
任务队列API允许每个队列每秒最多处理100个任务,并且有以下活跃队列的限制:
免费版:最多可以有10个活跃队列(不包括默认队列)
付费版:最多可以有100个活跃队列(不包括默认队列)
如果每个任务只进行一次UrlFetch请求,那么你可以通过计算[最大活跃队列数] * [每秒最大任务调用数] * [60秒]来得到每分钟的UrlFetch调用次数:
免费版: 11 * 100 * 60 = 66000 次UrlFetch调用/分钟
付费版: 101 * 100 * 60 = 606000 次UrlFetch调用/分钟
这些调用次数受到每分钟允许的UrlFetch调用数量限制:
免费版:每分钟3000次调用
付费版:每分钟32000次调用
正如你所看到的,任务队列和UrlFetch API可以有效地满足你的负载测试需求。