Ich habe eine Anwendung mit Client-Server-Architektur. Der Kunde Verwenden Sie Java Web Start mit Java Swing / AWT und der Server verwendet HTTP Server / Servlet mit Kater. Die Kommunikation erfolgt aus der Serialisierung von Objekten, erstellen Sie ein ObjectOutput serialisiert ein Byte-Array und sendet es an den Server jeweils genannt ObjectInputStream und deserializes.
Die Anwendung folgt der korrekten Kommunikation mit einem bestimmten Zeit der Gleichzeitigkeit, wo Fehler angezeigt werden "SocketException-Lesezeitlimit" Der Fehler tritt auf, wenn der Server die Methode aufruft ObjectInputStream.getObject () in meiner Servlet doPost-Methode.
Der Tomcat wird langsam und die Fehler beginnen, die Antwortzeit des Servers bis zur Absturzzeit zu verringern, wo ich den Server neu starten muss und nachdem alles funktioniert.
Jemand hat dieses Problem durchgemacht?
Kundencode
%Vor%Servercode
%Vor%input.readObject () ist der Fehler
Sie haben uns nicht viele Informationen gegeben, insbesondere über die Kundenseite. Aber mein Verdacht ist, dass die Client-Seite ist:
Mysteriös.
Basierend auf Ihrer aktualisierten Frage sieht es so aus, als ob es keines der oben genannten wäre. Hier sind ein paar andere Möglichkeiten:
Eine weitere mögliche Erklärung ist, dass Sie ein Speicherleck haben und dass die Verlangsamung dadurch verursacht wird, dass der GC immer mehr Zeit benötigt, wenn Ihnen der Speicher ausgeht. Dies wird in den GC-Protokollen angezeigt, wenn Sie sie aktiviert haben.
Ich denke, dass bei hoher Parallelität das in Tomcat festgelegte Socket-Timeout abgelaufen ist und die Verbindung geschlossen ist. Der nächste von Tomcat für diese Verbindung gelesene Wert ist größer als das Server-Socket-Timeout, das auf dem Server angegeben ist.
Wenn Sie dieses Problem vermeiden möchten, müssen Sie das Timeout auf der Serverseite erhöhen, das in Ihrem Fall abgelaufen ist. Aber nicht ratsam.
Übrigens hast du nicht genug Informationen gegeben. Haben Sie die Anzahl der Threads für die Verbindung in Tomcat erhöht? Wenn Sie das getan hätten, wäre das sicher passiert.
Tags und Links java sockets tomcat socketexception objectinputstream