2012-03-31 102 views
0

我是GAE的初学者,仍在评估是否应该将此用于我的学校项目。我需要证明一个应用程序的可扩展性,我想在这里使用的定义是它是否可以同时为1000个用户服务。Google App Engine,在Appspot服务器上进行负载测试

现在负载测试是这样做的一种方式。但是,当Google根据负载将应用程序扩展到多个不同的实例时,负载是徒劳的。

因此,我正在考虑模拟数据存储读取/写入访问memcache等,以显示应用程序的可扩展性前景。

现在,使用JUnit Test是一个很好的方法。但他们只能在本地运行。有没有办法在服务器上运行它们,实际的生产环境?如果可以这样做,那么我可以只写这些测试并通过eclipse执行它们,我应该完成!

另一种方式是使用硒的功能测试来模拟负载和实际的用户条件,但这很可能会导致我的电脑崩溃,也不会同时发生。

另一种选择是使用python加载测试脚本并使用示例json数据在服务器URL上发出请求。这然而我尝试了,但我不能测试真正的用户交互需要真正的用户互动的选项,因为活的网站需要谷歌登录。

任何想法,我在哪里继续?

+1

我不太清楚我的理解你的问题。我不明白有关负载无用的部分 - 您预计Google会扩展应用程序以处理1000个用户......所以......实质上,您只是想证明答案是肯定的?您是否试图确定您可以在单个实例上投放多少个用户?当你在App Engine上运行时,GAE会旋转更多的实例。一个关心的问题就是在测试结束之前用完配额。 – dragonx 2012-04-01 05:05:04

+0

是的,这是真的,但我的意思是,应该有一种在服务器级进行数据存储测试以模拟某种形式的行为,可以说读/写实体100次或者类似的东西,可能是这个问题没有适当的框架。 – redDragonzz 2012-04-01 09:03:49

回答

1

查看Siege(http://www.joedog.org/siege-home/)或JMeter(http://jmeter.apache.org/)以进行远程测试您的应用程序。问题在于,在达到您要测试的极限之前,您将达到实际测试机器的极限,因此很多人启动了一些EC2实例并从那里运行负载测试。 Seige非常简单,它只是从文本文件中读取一个URL列表,并按照您的要求对服务器进行破坏。 JMeter允许您创建更强大的测试,可以执行诸如登录到服务器之类的事情,并记录关于应用程序行为方式的更详细的细节。

那些是两个最好的免费和易于使用的工具(恕我直言)。

+0

这里要指出的是,在整个GAE体验中,缓慢的部分* IS *数据存储,这是您实际需要加载测试的部分。您可以通过制作太多的数据存储请求来破坏速度。获取便宜,查询不是。设置JMeter,记录一堆网址,点击它一段时间,然后进入并查看appstats以查看您的延迟时间。 – 2012-04-02 00:07:57

+0

要做到这一点,让我们看看它是否工作。 – redDragonzz 2012-04-02 11:45:59

0

这听起来像你真的想模拟数据存储操作。

您可以编写一个HTTP请求处理程序来加载您的junit测试并调用它们,然后将结果转储为日志或作为HTTP结果。

如果它们需要很长时间才能运行,您可以在后端实例上运行它们。

根据Rick的建议,您也可以在后端实例上运行测试,该后端实例使用异步HTTP API向您的前端实例发出HTTP请求,并导致您的前端实例执行大量工作这就是你需要模拟的东西。

相关问题