Java 调整Web服务

Java 调整Web服务,java,web-services,cxf,performance,Java,Web Services,Cxf,Performance,我有一个使用CXF创建的Web服务。在我的服务中,我运行的应用程序非常耗时 我的应用程序大约需要30分钟才能执行,但在Web服务中大约需要1.5小时 我能做些什么让我的服务更快吗?如果你做同样的工作,没有任何好的理由产生这样的差异。您必须了解环境或所使用的输入参数的不同之处 试着打开-Xverbose:gc,可能是您已经将servlet容器上的堆设置到了最大,JVM正在一次又一次地运行garabage收集器,这是它的整个生命周期 注意,您还可以看到使用JDK附带的jvisualvm是免费的。我想

我有一个使用CXF创建的Web服务。在我的服务中,我运行的应用程序非常耗时

我的应用程序大约需要30分钟才能执行,但在Web服务中大约需要1.5小时


我能做些什么让我的服务更快吗?

如果你做同样的工作,没有任何好的理由产生这样的差异。您必须了解环境或所使用的输入参数的不同之处

试着打开-Xverbose:gc,可能是您已经将servlet容器上的堆设置到了最大,JVM正在一次又一次地运行garabage收集器,这是它的整个生命周期


注意,您还可以看到使用JDK附带的jvisualvm是免费的。

我想看看sunjdk中使用jvisualvm的应用程序


我的猜测是,您的web服务容器中的内存太少,所有的时间都花在垃圾收集上。

这里确实没有足够的信息来解决这个问题,您需要使用某种跟踪/分析机制来了解发生了什么。这可能是内存问题。我不知道你实际上是如何启动这个应用程序的,但可能是它被分配了一个非常低优先级的线程,而JUnit启动时,它被分配了一个更高优先级的线程。webservice本身将在半个小时之前超时,更不用说1.5个小时了,那么您是使用异步服务还是从该服务启动自己的线程和/或进程?如果它是一个单独的进程,有多少内存分配给它

一旦你收集了这些信息,你很可能就在真正得到答案的路上了


YMMV

这完全取决于您在WebMethod中所做的事情只是调用我在junitI中所称的java应用程序,我认为CXF或Tomcat在一段时间后正在做一些事情,例如一些清理任务。而不是一个小时的CPU时间。。。tomcat实际上是一个非常瘦小的软件,CXF无疑是一个野兽……但仍然是一个小时!很抱歉刚刚看到你关于内存的评论,忽略我的上一次编辑..这不会是内存,不应该是beYes,我需要很多内存,我需要用-Xmx1600m启动Tomcat。我可以为容器本身分配内存吗?不幸的是,windows 32位计算机的堆大小有一个限制:@myboro,是的,windows不提供更多。如果您使用IBM JVM,请使用与jvisualvm等效的工具进行调查。这一切都在同一个线程中。我将应用程序项目包括在eclipse中的webservice项目中。