我在java中有一个应用程序,有两个服务(A和B)通过RMI进行通信 服务A可以在B侧激活的方法 服务B可以在A侧激活的6种方法 在这6种方法之间我有一个重要的方法,我正在检查性能, 我正在计算RMI调用之前的时间差,直到另一侧的方法开始(A侧) 时间通常在0-4毫秒左右,但有时候时差会跳到大约40,60甚至100毫秒 题: 1)有没有办法使用RMI优先于其他方法(或线程)? 2)什么会导致这种不稳定? 3)在此类应用中使用RMI可以达到的最佳性能率是多少? 4)其他建议的解决方案?
提前致谢, 波阿斯
答案 0 :(得分:0)
1)有没有办法使用RMI优先于一个方法(或线程)而不是其他方法(或线程)?
无法使RMI方法优先于其他方法。此处也没有任何证据表明它会有任何好处,因为没有证据表明存在争用问题。您可以更改任何线程的优先级,但如果没有争用证据,则没有理由相信它会有所帮助。
2)什么会导致这种不稳定?
网络,DNS,两端的负载,网络负载......
3)在此类应用中使用RMI可以达到的最佳性能率是多少?
一个毫无意义的问题。什么硬件?什么网络?什么带宽?什么延迟?什么负载?这些方法在空载时本地执行多长时间,或者仅仅是那个负载?
4)其他建议的解决方案?
有很多方法可以通过网络进行通信,但它们都会调用网络DNS,带宽,延迟,两端的硬件,负载......所有相同的因素。
RMI性能主要是CPU和带宽方面的序列化性能,以及延迟方面的DNS性能。