如何测试服务器性能?

时间:2013-09-11 18:33:09

标签: java performance-testing

我写了一个小程序来测试我服务器的性能。程序每秒向服务器发送100个请求,并测量接收答案所需的时间。测试程序是用Java编写的,每个请求都由一个单独的线程处理。请求已编号。该号码由服务器退回,以便客户端程序知道哪个请求得到了应答。 问题是,我得到的结果是全部的。有时回复需要一秒钟,有时是3秒钟,有时甚至是10秒钟。我无法理解它。为什么会出现这种情况?如果我做错了什么可能是更好的方法来测试我的服务器?

编辑欲了解更多信息。该服务器是Amazon Elastic Beanstalk应用程序。它在5个EC2实例的集群上运行。它运行一个简单的程序,在发送包含请求中收到的数量的响应之前进行一些循环。客户端在发送每个请求时对其进行计时,并将其与收到相应回复所需的时间进行比较。

编辑2测试运行30分钟,输出是所有时间的平均值。请求之间的结果差异很大,但我个人平均值之间的差异也很大。

4 个答案:

答案 0 :(得分:1)

如果要检查网络服务器的性能,可以使用grider。

此页面上的更多信息http://grinder.sourceforge.net/

答案 1 :(得分:0)

嗯,你的互联网连接速度可能会有所波动,特别是如果你将它们用于其他事情。您的服务器也是如此。这就是为什么ping不是一件永恒的事情。由于流量变化导致的任何服务器端操作都可能影响时间。你的方法应该没问题。

答案 2 :(得分:0)

我认为你在这里尝试的是负载测试。根据数据的性质,处理时间可能会有所不同。例如比如说,您的服务器正在解析XML,因此根据XML数据的大小,它可能需要不同的时间来响应。

我还可以依赖,如果有网络呼叫(比如说DB呼叫或网络服务呼叫),那么根据第三方响应和网络性能,结果可能会有所不同。

我相信您测试服务器性能的方式仍然可以,只要您使用各种可能的数据,边界条件和不同的流程(基于业务逻辑)进行测试。

其他方法是使用某种工具设置自动负载测试;但根据应用程序的性质和数据类型,这将是一项很好的工作。

答案 3 :(得分:0)

您的服务器在哪里?如果它远程托管在某处,则会发生许多事情:承载服务器的同一台计算机上的负载可能会有所不同,网络速度可能会有所不同。此外,由于你用100请求/秒轰炸你的服务器,它可能是相当繁重的工作。根据等待共享关键资源的许多事情,响应时间应该像这样变化。它简短,不知道服务器的性质,我们不确定。

我要做的是,如果负载为100请求/秒,您的服务器在最坏的情况下似乎有1​​0秒的响应。你也可以计算平均时间......