7 votes

Comment limiter le temps d'exécution des requêtes avec Tomcat 6

Je développe une application web avec Spring et Tomcat 6. Parfois, pour une raison ou une autre, une requête prend trop de temps à se terminer et cela réduit les performances du serveur. Est-il possible de limiter le temps d'exécution des requêtes dans Tomcat 6 ou Spring ? D'autres approches sur ce problème sont les bienvenues. Merci.

1voto

TheWhiteRabbit Points 4985

Utilisation de la configuration de HttpConnector connectionTimeout

modifier votre server.xml

<Connector ... connectionTimeout="xxxx"

xxxx est le nombre de millisecondes

0voto

Stephen C Points 255558

Est-il possible de limiter le temps d'exécution des requêtes dans Tomcat 6 ou Spring ?

Oui, c'est possible, mais vous devrez l'implémenter vous-même.

L'idée de base est que la méthode de demande doit utiliser un fichier Timer pour programmer une interruption pour lui-même pour N secondes dans le futur. Ensuite, il doit vérifier périodiquement pendant le traitement de la demande pour voir s'il a été interrompu. Enfin, il doit annuler la minuterie si elle se termine avant le délai d'attente.


Ce qui précède suppose que c'est la servlet qui doit limiter le temps qu'elle passe à traiter une requête. Si vous souhaitez plutôt implémenter le délai d'attente du côté client, il est facile de mettre en place un délai d'attente à l'achèvement d'une requête ; par exemple voir Délai de requête Tomcat .

(Mais le problème avec un délai d'attente côté client est que le serveur ne saura pas que le client a renoncé à attendre, et continuera à traiter la demande malgré tout. Il est facile d'avoir de gros problèmes avec cela. Imaginez une requête qui prend beaucoup plus de temps que le délai d'attente, combinée à un client qui relance de façon répétée les requêtes dont le délai d'attente est dépassé...)

0voto

Nitish Pandey Points 1

La déclaration ci-dessus de Sthepen n'est pas correcte. Du côté client, lorsqu'il abandonne ou que le navigateur est fermé, le navigateur ne maintient évidemment pas son socket en vie. Il effectue un shutdown de la socket (récupérer la mémoire et le port, n'est-ce pas ?). La procédure d'arrêt enverra les signaux d'arrêt au socket côté serveur - RST je crois.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X