java.net. SocketTimeoutException: Читайте приведенный к таймауту

У меня есть приложение с клиент-серверной архитектурой. Клиентская сеть Java использования Запускает с Java Swing / AWT и sert используют сервер HTTP / Сервлет с Tomcat. Коммуникация сделана из сериализации объектов, создайте ObjectOutput, сериализирует массив байтов, и отправьте к серверу, соответственно названному ObjectInputStream, и десериализовывает.

Приложение следует за передачей правильно к определенному времени параллелизма где, начиная показывать ошибку "тайм-аут чтения SocketException". erro происходит, когда сервер вызывает метод ObjectInputStream.getObject () в моем сервлете doPost метод.

Кот приедет медленный, и ошибки начинают уменьшать время отклика сервера до времени катастрофического отказа, где я должен перезапустить сервер и после того, как все работает.

Кто-то прошел эту проблему?

Клиентский код

URLConnection conn =  url.openConnection();
conn.setDoOutput(true);

OutputStream os = conn.getOutputStream();
ObjectOutputStream oss = new ObjectOutputStream(os);

oss.writeUTF("protocol header sample");

oss.writeObject(_parameters);
oss.flush();
oss.close();

Серверный код

ObjectInputStream input = new ObjectInputStream(_request.getInputStream());
String method = input.readUTF();

parameters = input.readObject();

input.readObject () - то, где ошибка

8
задан Steve Armstrong 22 February 2011 в 17:33
поделиться

1 ответ

Вы не дали нам много информации, особенно о стороне клиента. Но я подозреваю, что на стороне клиента:

  • не удается установить заголовок Content-length (или установить неправильное значение),
  • не удается очистить выходной поток и / или
  • не закрывает выходная сторона розетки.

Таинственный.

Судя по вашему обновленному вопросу, ничего из вышеперечисленного не похоже. Вот пара других возможностей:

  • По какой-то причине клиентская сторона либо полностью блокируется во время сериализации, либо занимает ОЧЕНЬ ДЛИТЕЛЬНОЕ ВРЕМЯ.
  • Между клиентом и сервером существует прокси-сервер, который вызывает проблемы.
  • Возникли проблемы с сетью, связанные с нагрузкой, или проблемы с сетевым оборудованием.

Другое возможное объяснение заключается в том, что у вас есть утечка памяти, и что замедление вызвано тем, что сборщик мусора занимает все больше и больше времени по мере того, как у вас заканчивается память. Это будет отображаться в журналах GC, если они у вас включены.

10
ответ дан 5 December 2019 в 17:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: