如何使 TCPTransport$ConnectionHandler.run 消耗更少的 CPU 时间
我正在使用 apache cxf 开发一个 Web 服务应用程序。基本上,这个 Web 服务的作用是使用 hibernate 搜索 psql 数据库并返回结果。
这项服务的问题是速度有点慢。当我在 jetty 上本地运行它并使客户端请求数据时,VisualVM Profiler 指出 sun.rmi.transport.tcp.TCPTransport.ConnectionHandler.run 消耗了 80% 的 CPU 时间。列表中的所有其他功能均低于 5%。
我怀疑这个函数涉及将数据从服务传输到客户端。然而,两者都在本地运行,因此我不希望此传输花费这么多的 CPU 时间。有谁知道这可能是什么原因造成的?
谢谢!
I'm developing a webservice application, using apache cxf. Basically What this webservice does is searching a psql database using hibernate and returning the results.
The problem with this service is that it's kind of slow. When I run it LOCALLY on jetty and make the client request the data, then the VisualVM Profiler points out that sun.rmi.transport.tcp.TCPTransport.ConnectionHandler.run consumes 80% of the CPU time. All other functions in the list are less than 5%.
I suspect that this function is involved in transfering the data from service to client. Both run locally however, so I wouldn't expect this transfer to take this much CPU time. Does anyone know what could cause this?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,它涉及从 go 到 whoa 的整个 RMI 调用的解组、定位、执行和编组。如果它占用了 80% 的 CPU 时间,那么几乎可以肯定是因为您的远程方法占用了 80% 的 CPU 时间。
No, it is involved in unmarshalling, locating, executing, and marshalling the entire RMI call from go to whoa. If it is taking 80% of CPU time that is almost certainly because your remote methods are taking 80% of CPU time.