Maison  >  Questions et réponses  >  le corps du texte

Comment faire en sorte que Tomcat soit automatiquement supprimé de nginx en amont avant GC pour éviter l'expiration du délai ?

Tomcat exécutera fullgc de temps en temps. Si nginx envoie une requête à ce moment-là, la requête expirera.

Une solution consiste à définir un délai d'attente plus court du côté de nginx. S'il n'y a pas de réponse, changez de machine pour renvoyer la demande. Cependant, le problème est que cette demande est un effet secondaire et ne peut pas se reproduire.

Je voudrais demander s'il existe un mécanisme par lequel nginx supprime automatiquement Tomcat avant gc, puis le rajoute automatiquement une fois gc terminé ?

En bref, c'est pour éviter l'impact du timeout causé par Tomcat gc~

PS :

L'amont de nginx est configuré avec plusieurs tomcats Tant qu'un gc se produit sur une machine, toutes les requêtes tombant sur cette machine expireront.

.
为情所困为情所困2686 Il y a quelques jours596

répondre à tous(1)je répondrai

  • 淡淡烟草味

    淡淡烟草味2017-05-16 17:23:13

    Tomcat dispose d'un écouteur pour éviter les débordements de mémoire :

    org.apache.catalina.core.JreMemoryLeakPreventionListener
    

    Je soupçonne que cela est dû à l'ajustement de System.gc(), et ce GC utilise peut-être la méthode stop the world, ce qui signifie qu'il n'est pas simultané. Vous pouvez essayer les deux options suivantes :

    1.-XX:+ExplicitGCInvokesConcurrent GC
    2 Désactivez l'écouteur ou désactivez les appels directs depuis le niveau JVM -XX:+DisableExplicitGC

    .

    Ensuite, observez pendant un moment.

    répondre
    0
  • Annulerrépondre