我有一个使用CXF创建的Web服务。在我的服务中,我运行一个非常耗时的应用程序。
我的应用程序需要大约30分钟才能执行,但在Web服务中需要大约1个半小时。
我可以做些什么让我的服务变得更快?
答案 0 :(得分:0)
这种差异没有任何充分的理由(假设你做同样的工作)。您将不得不弄清楚环境或您正在使用的输入参数的不同之处。
尝试打开-Xverbose:gc
可能是因为你刚刚在servlet容器上占用了大量的堆,并且JVM正在一遍又一遍地运行garabage收集器。
请注意,您还可以免费使用JDK附带的jvisualvm
。
答案 1 :(得分:0)
我将在Sun JDK中查看jvisualvm的应用程序。
我的猜测是你的Web服务容器中的内存太少,并且所有的时间都花在了垃圾收集上。
答案 2 :(得分:0)
这里确实没有足够的信息来解决这个问题,你需要弄清楚正在使用什么样的跟踪/分析机制。这可能是一个记忆问题。我不知道你是如何实际启动应用程序的,但可能是它被JUnit启动时被分配了一个非常低优先级的线程,而不是更多用户(高)优先级线程。网络服务本身会在半小时过去之前很长时间,更不用说1.5小时了,那么您使用ASync服务还是从服务启动自己的线程和/或进程?如果它是一个单独的进程,那么分配了多少内存?
一旦你收集到这些信息,你就可能正在努力获得答案。
YMMV