SYN_SENT проблема из Java-программы - PullRequest
0 голосов
/ 20 января 2011

В моем приложении, когда запускается мой сервер приложений, я создаю 5 потоков, и каждый поток представляет собой соединение с базой данных сервера as400.И каждый поток (Java-программа) будет устанавливать соединение as400 за каждую минуту.Но еженедельно, по нескольким причинам, один из серверов базы данных as400 отключается на 1-2 часа, и связанный с ним поток Java-файлов попадает на этот сервер БД каждую минуту.На данный момент мое веб-приложение застряло, и я даже не могу получить доступ к URL.

И из консоли Linux, когда я выполнил команду netstat -an, я увидел, что одно состояние сервера - SYN_SENT,не работает.

Заранее благодарим за помощь.

Ответы [ 3 ]

0 голосов
/ 20 января 2011

Возможно, вам следует использовать какой-то пул соединений [базы данных], а не открывать новое соединение каждую минуту.

0 голосов
/ 20 января 2011

Сервер просто не принимает подключения, а код подключения не использует никакого значимого тайм-аута и не предназначен для обнаружения неисправных серверов. SYN_SENT означает, что удаленный компьютер (AS / 400) не устанавливает соединение. Если возможно, попробуйте удалить этот конкретный сервер из списка доступных.

Если вы открываете соединения напрямую (сами): опубликуйте свой код. Я помогу вам сделать это без тайм-аута и в конечном итоге зацикливаться на доступных серверах.

0 голосов
/ 20 января 2011

Вы можете попытаться настроить различные параметры сокетов. Руководство здесь: http://download.oracle.com/javase/1.4.2/docs/guide/net/socketOpt.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...