有没有办法在Java RMI调用中引入假延迟?

时间:2011-07-19 13:57:27

标签: java debugging rmi latency

想要诊断当我的客户与世界另一端的服务器通话时发生的瓶颈。我想在我的本地计算机上运行服务器并模拟延迟。有没有办法在所有远程调用中注入一个简短的线程休眠?我不确定哪个远程呼叫是瓶颈,所以我需要将它们全部延迟。

第二次尝试澄清:我不想将线程睡眠复制粘贴到每个远程方法中,因为有很多远程方法。我正试图找到一种方法将睡眠注入RMI子系统,因此所有通过RMI的调用都将被延迟。

5 个答案:

答案 0 :(得分:7)

WANem旨在实现这一目标。它在网络级别工作,因此不是Java或RMI特定的。

答案 1 :(得分:1)

Charles Proxy服务器具有可以为连接添加限制/延迟的功能:

http://www.charlesproxy.com/documentation/proxying/throttling/

我对查尔斯非常满意 - 非常值得获得50美元的许可证。

答案 2 :(得分:0)

你能写代理服务器吗?客户端与代理进行通信,代理对服务器进行相同的方法调用。这样您就可以重新配置客户端,但不需要更改代码。代理可以添加延迟并记录呼叫和响应。

答案 3 :(得分:0)

有一个名为SoftPerfect Connection Emulator的Windows应用程序。模拟延迟,并在必要时模拟丢失或带宽限制。见http://www.softperfect.com/products/connectionemulator/

答案 4 :(得分:0)

可以通过调用setSocketFactory来实现和注入您自己的RMISocketFactory来引入延迟。