Java 提高JAX-RS应用程序的性能

Java 提高JAX-RS应用程序的性能,java,performance,rest,jax-rs,websphere-liberty,Java,Performance,Rest,Jax Rs,Websphere Liberty,我一直在为Java Restful Web服务开发一个JAX-RS应用程序 应用程序正遇到负载过大的性能问题 通常,服务一个请求大约需要400毫秒(0.4秒),但当我复制同一个请求1000倍时,服务每个请求的时间增加到30000毫秒(30秒) 它相当简单的应用程序使用:jax-rs、CDI-Injection、jaxb和JDBC 服务器是IBM的Liberty配置文件 部署在带有2个吊舱/节点的docker容器上 如何提高此应用程序的性能?Kishor 在以后的WebSphereLiberty版

我一直在为Java Restful Web服务开发一个
JAX-RS
应用程序

应用程序正遇到负载过大的性能问题

通常,服务一个请求大约需要400毫秒(0.4秒),但当我复制同一个请求1000倍时,服务每个请求的时间增加到30000毫秒(30秒)

它相当简单的应用程序使用:
jax-rs
CDI-Injection
jaxb
JDBC

服务器是IBM的Liberty配置文件

部署在带有2个吊舱/节点的
docker
容器上

如何提高此应用程序的性能?

Kishor

在以后的WebSphereLiberty版本中,与线程池相关的吞吐量有了一些性能改进。您的问题没有提供有关您正在使用的WebSphere Liberty级别的信息。此外,WebSphereLiberty中的JAX-RS功能也有一些性能改进,这可能也是有益的

正如所建议的,您需要通过分析瓶颈来确定是什么导致了减速。通常它是某种资源;例如,使用verbosegc运行的网络、CPU、内存、磁盘、锁等是一个很好的起点,可以查看垃圾收集活动。如果堆没有针对您尝试执行的负载进行适当的配置,则垃圾收集暂停可能会导致您的问题,但也有许多其他可能性。这是一个很好的排除立即,因为这是很容易做的分析


如果您提供您的WebSphere Liberty版本号,这将有助于人们向您提供更多可能有帮助的信息。

通过分析瓶颈并解决它们。正如Jared提到的,请提供更多详细信息。性能调优是一项复杂的任务,您可以在此处阅读一些理论概念:。作为一个开始,我同意在发布期间进行检查和收集。您也可以考虑使用具有大阈值的请求定时功能。版本号并不重要。这与WAS的代码无关,而是他自己的代码。如果使用探查器查找热点,详细GC是一个不好的起点,因为它会产生大量输出,并且不会告诉您问题的根源。更不用说你认为GC是个问题了,我是说verbose GC是一个开始,看看内存是否是约束资源的地方。人们总是错误地配置堆大小,并获得有限的吞吐量,因为他们一直在进行垃圾收集。我并不认为GC是问题所在,只是将其作为一种可能性加以说明。