java.net.SocketTimeoutException: Read timed out
J'ai une application avec une architecture client /serveur. Le client
utilisation de Java Web Start avec Java Swing /AWT et le sert utilise un serveur HTTP /Servlet avec
Tomcat.
La communication est faite à partir de la sérialisation d'objets, de créer un
ObjectOutput sérialise un tableau d'octets et de l'envoyer au serveur
respectivement appelés les ObjectInputStream et désérialise.
L'application suit communiquer correctement à un certain
le temps de la simultanéité où commencer à afficher le message d'erreur
"Exception socketexception que le délai d'attente". L'erreur se produit lorsque le serveur d'appeler la méthode
ObjectInputStream.getObject() dans ma servlet méthode doPost.
Le tomcat va venir lent et les erreurs commencent à diminuer le temps de réponse du serveur jusqu'à ce que le crash de l'heure à laquelle je dois redémarrer le serveur et après tout fonctionne.
Quelqu'un est passé par ce problème ?
Code Client
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();
Code Serveur
ObjectInputStream input = new ObjectInputStream(_request.getInputStream());
String method = input.readUTF();
parameters = input.readObject();
d'entrée.readObject() est l'endroit où l'erreur est
Est la quantité de temps qui s'écoule avant l'exception socketexception 20 minutes ou plus longtemps? (si je me souviens de la quantité standard de temps un socket tcp/ip doit attendre avant de temps si il n'y a pas de connecter l'activité) ? Après tout, l'Exception est de vous dire "délai d'attente" aussi pourrait-il avoir quelque chose à voir avec la nature asynchrone de l'internet?
C'est un tcp linux paramètre? Comme tampon mem taille max des fichiers ouverts ou d'autres?
OriginalL'auteur Rafael Soto | 2010-03-20
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas donné beaucoup d'informations, en particulier sur le côté client. Mais je soupçonne que le client est:
Mystérieux.
Basée sur la mise à jour de votre question, il ressemble à rien de ce qui précède. Voici quelques autres possibilités:
Une autre explication possible est que vous avez une fuite de mémoire, et que le ralentissement est causé par le GC prenant de plus en plus de temps que vous exécutez hors de la mémoire. Cela apparaîtra dans la GC, les journaux, si vous les avez activées.
OriginalL'auteur Stephen C
Je pense que Pendant la haute Simultanéité, la Prise de Délai défini dans Tomcat est Expiré et que la connexion est fermée. La prochaine lecture par Tomcat pour que la connexion est plus grand que le serveur de socket délai spécifié dans le serveur.
Si vous voulez éviter ce problème, vous devez augmenter le délai d'attente sur le côté serveur qui est arrivé à expiration dans votre cas. Mais pas conseillé.
BTW, vous ne donnez pas assez d'informations. Avez-vous augmenter le pas de fils pour le raccordement de Tomcat? Si vous l'avez fait, ce serait sûrement arriver.
OriginalL'auteur vetri