Tomcat性能负载

Tomcat性能负载,tomcat,benchmarking,load-testing,performance,Tomcat,Benchmarking,Load Testing,Performance,我们目前正在负载测试我们的应用程序,一个JavaRESTServices Web应用程序。 乍一看,性能很差,但我们没有比较点 环境: -Amazon micro EC2实例上的ubuntu 12.04服务器 -tomcat 7,最大线程数=500,Xmx=450m -java 6,默认安装 网络应用/服务: 一个名为“getVersion”的简单webapp,提供在线服务。 它返回一个字符串“1”-没有处理(数据库、文件等)-只返回“1” 测试: 我们使用multimechanize对其进行了

我们目前正在负载测试我们的应用程序,一个JavaRESTServices Web应用程序。 乍一看,性能很差,但我们没有比较点

环境: -Amazon micro EC2实例上的ubuntu 12.04服务器 -tomcat 7,最大线程数=500,Xmx=450m -java 6,默认安装

网络应用/服务: 一个名为“getVersion”的简单webapp,提供在线服务。 它返回一个字符串“1”-没有处理(数据库、文件等)-只返回“1”

测试: 我们使用multimechanize对其进行了负载测试:100个并发用户,持续60秒。 我们实际上每秒有76个请求

结果: 在0、X和5秒之间做出响应。大约每10个请求出现一次5秒

我们认为Tomcat可以轻松处理这一数量的并发请求。 这正常吗?除了内存,还有什么需要调整的吗,maxThreads

结果:在0、X和5秒之间做出响应。大约每10个请求出现一次5秒


基于以上内容,我将附加一个探查器(例如jvisualvm)并观察GC周期,尝试设置并行GC,或者简单地增加堆大小,看看它是否有影响,450m应该足够了,但是每个请求的膨胀和拥有多个用户可能会导致频繁的GC周期,这只是一个猜测,但是值得一试

我会先在您本地的笔记本电脑上尝试相同的负载测试,以 排除微实例的问题 (如果你说这是一个非常简单的应用,那应该不难)

运行jvisualvm并进行一点分析也很容易。 偶尔非常缓慢的异常值闻起来像GC问题

(如果有帮助的话,这些数字听起来相当可怕。
我希望这样的虚拟应用程序能够处理远不止这些问题。

您的问题可能是由于微实例方法:


它们最多可获得2个ECU,但无法保持该进程的能力。如果您滥用cpu共享,您的实例将在一段时间内得到更少的处理。

每个请求都有数据库I/O吗?每个请求执行的是什么过程?还是一个普通的角落?你也没有说你使用什么Tomcat版本。没有I/O,方法只是返回“1”。什么是Tomcat版本?您是否在客户端模式()的服务器上运行JVM。还有GC参数和堆大小是多少,您可能在GC上浪费时间?还有什么是当前的maxThreads设置我们设置Tomcat7,我默认安装了JRE。我相信我们在GC上也会浪费时间,因为响应时间有时会加快并恢复到正常时间。还有什么事情要做来优化GC吗?还要记住,EC2微实例只有613MB内存,IO和CPU都很低。在AmazonEC2doc()中,它甚至没有被归类为“标准实例”。你不能期望软件比它运行的硬件更快。