您好,是否有任何缓存或jvm设置可以加速方法调用?
例如:我确实有一个web服务,当我每10分钟左右调用它一次时,处理速度相当慢,与每20秒调用一次相比,大约需要8-10秒-结果大约是5秒。
除了这个之外,没有其他东西在服务器上运行。有没有办法加快速度呢?(我不能缓存任何对象。)
我使用了JProfiler,我使用相同的参数调用它。它做的是完全相同的事情。区别在于我调用它的时间不同。服务器空闲的时间。1分钟或30分钟是不同的。
谢谢
编辑:平台是: AIX java: IBM J9 VM (build 2.3,J2RE 1.5.0 IBM J9 2.3 AIX ppc64-64.服务器: tomcat
发布于 2010-02-16 17:31:16
可以解释这种行为的因素:
-server和其他资源被池化。在低活跃度下,池可能会缩小,对象将需要为re-allocated调查这类问题可能很困难。我建议您尝试将OS级别的信息与JVM级别的信息关联起来。分析器可能不是最好的工具,可以尝试使用JConsole、mem等。
还要尝试识别不同典型场景之间的偏差,例如,启动后的第一个请求,重负载下的请求,中等负载下的请求等。尝试确定响应时间何时发生变化。
发布于 2010-02-16 15:40:43
使用Profiler。
JProfiler将是一个很好的选择。
使用分析器,您可以识别代码中的热点。一旦你确定了这些热点,你就可以考虑从空间和时间上改进这些热点的各种方法。
发布于 2010-02-16 15:42:53
除了改进代码本身之外,还要确保运行服务器的JVM是服务器vm,而不是客户机vm。使用-server参数。
客户端虚拟机
Java HotSpot(TM) Client VM (build 14.1-b02, mixed mode, sharing)服务器虚拟机
Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode)要了解您在生产环境中运行的内容,您可以通过编程方式执行以下操作:
System.getProperty("java.vm.name");这应该会给出类似于: Java HotSpot(TM) 64位服务器VM的信息
否则(如果您不想接触代码),您可以执行thread dump并查看顶部的内容,例如: Full thread dump Java HotSpot(TM) Server (16.0-b13混合模式)
https://stackoverflow.com/questions/2271283
复制相似问题