2011-01-19 29 views
0

在我的應用程序中,當我的應用程序服務器啓動時,我創建了5個線程,每個線程都是一個as400服務器數據庫連接。並且每個線程(java程序)會每隔一分鐘創建一個as400連接。 但是每週一次,由於幾個原因,as400數據庫服務器中的一個出現故障1-2小時,並且每隔一分鐘關聯一次java線程就會將此數據庫服務器命中。此時,我的Web應用程序被卡住了,我甚至無法訪問URL。來自java程序的SYN_SENT問題

而從Linux控制檯,當我做了netstat -an,我看到一個服務器狀態是SYN_SENT這是關閉。

在此先感謝您的幫助。

回答

0

也許你應該使用某種[數據庫]連接池,而不是每分鐘打開一個新的連接。

0

服務器根本不接受連接,連接的代碼沒有使用任何有意義的超時,也沒有檢測到有故障的服務器。 SYN_SENT意味着遠程機器(AS/400)不建立連接。如果可能,請嘗試從可用服務器列表中刪除該服務器。

如果您直接打開連接(自己):發佈您的代碼。我會幫你做到這一點,超時並最終在可用的服務器之間循環。

+0

謝謝!它使用正常的jdbc drivermanager連接來實現。正如你所說的,我可能會從服務器列表中刪除一個服務器,但這個概念是我必須在服務器啓動時重新連接到服務器!所有as400服務器將在一週內停機1-2小時,但不會同時:(因此,我無法從服務器列表中刪除此服務器。 – Sridhar 2011-01-21 15:40:11