2011-03-17 62 views
1

我們在JBOSS 4.0.2服務器上部署了J2EE Web應用程序。從最近幾天起,應用程序突然停止。 我們在日誌中遇到以下錯誤。I/O錯誤:套接字錯誤

java.net.SocketException: Software caused connection abort: recv failed

由於上面的套接字錯誤,應用程序無法連接數據庫。 重新啓動jboss應用程序也無濟於事。要解決套接字錯誤,我們必須重新啓動生產機器。 重新啓動生產機器後,它可以正常工作。

上述套接字錯誤的原因是什麼?

+0

看起來像是數據庫端的問題。你有沒有檢查數據庫日誌中的錯誤? – 2011-03-17 11:35:15

+0

是否由於數據庫關閉連接?看起來像你有防火牆問題。 – adarshr 2011-03-17 11:38:12

+0

我們使用Windows 2003 64位服務器。使用Jboss 4.0.2作爲應用程序服務器,JDK版本1.6.18 64位和apache 2.2.15作爲web服務器。 還有其他應用程序實例連接到同一個數據庫並正常工作。 爲了測試這個數據庫連接問題,我們在另一個耳朵中部署了一個jsp,但是在成功連接到數據庫服務器的相同應用程序服務器實例下。 請讓我們知道所需的任何其他信息。尋找對此的迴應和解決方案。 – Maulin 2011-03-18 14:56:57

回答

0

這個錯誤實質上意味着有人試圖從一個封閉的套接字讀取或寫入(這是Windows的「連接重置」)。雖然有很多原因可以發生,但不可能確切地說明你的應用程序爲什麼這樣做。有些事情你可以嘗試檢查:

  • ,如果你有多個線程讀取和寫入同一個插座,使他們的一個肯定不會關閉它
  • 嘗試關閉Nagle's algorithm;我已經看到這個錯誤發生,因爲有人在操作系統寫完之前關閉了套接字(你可以用setTcpNoDelay做到這一點)