2011-06-06 89 views
4

我正在使用RMI,我發現它非常非常慢。對於一個簡單的調用,需要8到10秒才能得到響應。這不是我打電話的方法需要那麼長時間。如果我使用RMI,但將呼叫指向127.0.0.1,則速度非常快(無論如何,我所調用的方法並不複雜)。使用Spring的RMI很慢

那麼......可能是什麼原因?我的下游速度足夠快,遠程機器的上游速度足夠快......並且遠程機器不太忙其他事情。

任何我可以做錯的?或者有什麼東西來固定它?

+0

幾乎肯定是DNS延遲。 – EJP 2011-06-06 18:57:08

+0

你能發佈一些代碼,比如你的配置文件中的相關部分嗎? – abalogh 2011-06-07 07:43:11

回答

1

您是通過DNS引用遠程計算機還是使用原始IP地址?也許你放慢速度的是解決DNS名稱。

+0

我嘗試了兩種...不幸的是,它不是DNS。 – paoloP 2011-06-06 12:43:08

+0

@paoloP它可能是。在某些情況下,Java套接字會反向DNS查找。 – EJP 2011-06-08 11:28:29

1

可能是您的防火牆或某些代理妨礙了您的工作。你有客戶端和服務器上記錄的方法調用的入口和出口時間戳嗎?嘗試使用Wireshark查看數據包,特別是TCP SYN -> ACK -> SYN/ACK握手。

2

遠程機器是否具有IPv6(AAAA)DNS記錄?如果您沒有IPv6連接,嘗試與雙堆棧(IPv4 & IPv6)計算機通話時,可能會出現類似的延遲。 IPv6將首先嚐試,然後一旦超時幾秒後,連接將通過IPv4進行。