8
votes

Les demandes HTTP retenues lors de l'arrêt Tomcat

J'ai un problème avec Tomcat Shutdown. Demandes arrivant alors que le Le conteneur de servlet est en fermeture semble être retenu par le connecteur jusqu'à ce que l'arrêt du conteneur se termine.

Le problème est que notre servlet peut prendre jusqu'à une minute pour arrêter, signification Les connexions arrivant pendant cette période sont maintenues pendant une minute jusqu'à une minute.

Ce comportement est-il correct / attendu?

ne serait pas idéal que le comportement d'arrêt Tomcat soit à

  1. laisser les demandes existantes Terminer (comme ça le fait déjà), mais
  2. rejette de nouvelles connexions (au lieu de accepter et les tenir)?

3 commentaires

Avez-vous vu Ce ?


Veuillez vous reporter à cette réponse ici Stackoverflow.com/a/9186070/957654


Difficile de voir ce que cela pourrait faire d'autre. Si cela est censé être arrêté, il doit arrêter de traiter des demandes de temps. Pourquoi votre servlet prend-il une minute pour arrêter?


3 Réponses :


2
votes

Ceci est un comportement correct. Le client envoiait une demande tant qu'il voit que le serveur est en place au port donné.

serveur acceptera la demande tant qu'elle est en place. Donc, certaines des demandes reçues lors du processus d'arrêt, seront reçues mais ne seront pas entièrement traitées.

Vous devrez mettre en œuvre votre propre mécanisme, si vous souhaitez gérer ces demandes gracieusement. Vous pouvez utiliser une file d'attente ou des filtres JMS. Le premier filtre de réception de la demande de première demande serait de premier plan (DB / Serialize), puis le traiterait. Plus tard, lorsque le serveur redémarre, vous pouvez vérifier les demandes qui n'ont pas été traitées, vous pouvez les traiter ou informer le client qu'il a échoué.


0 commentaires

6
votes

Apparemment, vous n'êtes pas la seule personne à remarquer / commenter ce comportement; Voir cet article "Tomcat-User" Posting:

  • http: // grokbase .COM / T / TOMCAT / UTILISATEURS / 144B4JKA4T / HTTP-Demandes-Tele-up-up-up-up-shutdown .

    (En effet, les similitudes entre cette publication et votre question suggèrent qu'il existe un lien entre vous et Andry Eng ...)

    Si clairement, c'est un comportement "attendu" en quelque sorte.

    si c'est "correct" est une question d'opinion. Et il est discutable si les développeurs Tomcat ne sont pas d'accord avec votre opinion.

    Et, pour ce que cela vaut, poster des questions rhétoriques ici sur le comportement "idéal" est également discutable. Apparemment, les développeurs Tomcat ne sortent pas de Stackoverflow / "Tomcat-utilisateurs" ... ou ils ne sont pas disposés à débattre de la question.


    Alors, quelles solutions possibles avez-vous?

    • Ce Q & A lié explique une solution de contournement - Comment traiter des demandes de servlet lors de l'arrêt long

    • Vous pouvez ouvrir un problème sur le suivi de la question Tomcat. Le Snag est que votre problème pourrait s'asseoir sur la liste pendant des mois ou des années avant qu'il ne soit abordé. Ou il pourrait être "rejeté".

      Cependant, il ne semble pas que quiconque a soumis cela comme une question dans le passé.

    • Vous pouvez déterminer comment modifier Tomcat pour rejeter de nouvelles demandes lors de l'arrêt. Puis soumettez vos changements (testés) sous forme de correctifs.

    • Vous pouvez embaucher quelqu'un pour faire le travail pour vous. Par exemple, jetez un coup d'œil aux personnes / organisations énumérées ici: http://wiki.apache.org/ Tomcat / SUPPORTANDINAINE .


0 commentaires

2
votes

Ceci est un comportement difficilement souhaitable. Lors de la fermeture, cela devrait cesser d'accepter de nouvelles connexions, mais je suppose qu'il y avait des défis techniques dans la mise en œuvre. Moot, de toute façon comme indiqué.

Comment nous avons passé cela est ceci:

  1. Nous avons des serveurs Web devant nos Tomcats. Obtenez cela en place, planifiez à long terme si vous ne le faites pas, est mon conseil.
  2. Demandez au serveur Web de déposer un nœud (instance Tomcat) de sa liste des instances Round Robin.
  3. Après 3-4 minutes, le nœud Tomcat devrait être libre (pas de nouvelles connexions et anciens achevés). Nous avons un serveur Web personnalisé basé sur http://www.quickserver.org/ et cela laisse le dos -end Tomcats complètes dans les connexions de processus, bien que cesser de lui donner de nouveaux.
  4. Lors de la maintenance, nous avons un autre service sur l'agent pour revenir à la liste Tomcat à la liste des serveurs Web des serveurs actifs.

    Dans notre cas, nous avions un moyen de dire au serveur de recharger leurs configuration. D'autres serveurs semblent avoir la même https://serverfault.com/ QUESTIONS / 108261 / HOW-TO-CAIS-MODIFICATION-AFFAIRE-SANS-REDOMART-NGINEX


0 commentaires