2011-03-08 201 views
4

我正在运行第三方RMI服务器应用程序提供了一个方法("getImage()" returns an image as byte[]).此方法的实现(通过SOAP-WS获取图像)由我提供。rmi.transport.tcp.tcptransport Connectionhandler消耗很多CPU

运行此RMI服务器的问题是CPU消耗过高(使用jvisualvm测量):65%的CPU时间进入"sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()",第二位的15%为"sun.net.www.http.KeepAliveCache.run()"。 “真正”的作品(缩放图像)排在第四位。 服务器在win 2003服务器上运行。我猜资源/连接处理有问题吗?但是这是一个实现问题还是Windows配置问题?

另一种观察是:如果CPU利用率高,内存利用率也会上升 - 问题是:这是因为gc无法完成其工作或等待交付的许多映像。所有我可以说的记忆用于byte[]

所以有什么想法做什么?提前

回答

0

sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run()

THX是调用远程实现在服务器,编组参数之后和编组结果之前的方法。时间表可能意味着需要更多时间才能通过线路返回图像作为RMI结果,而不是缩放图像。

0

我只能推测字节数组可能是图像,但它可能是任何数量的东西。

顺便说一句你正在运行一个多核心机器?我也遇到了这个问题,并发现VisualVM指出,在四核Win7机器上CPU利用率约为50%,而在单核winXP上则为100%。我正在运行服务器的Jetty。

对不起,我不能回答真正的问题,但希望听到一个解决方案在这里或能够在这里很快分享。既然你在几个月后遇到了这个问题,也许你已经找到了一个并且可以分享?