2017-06-06 2 views
0

En utilisant Spring et Wildfly, j'ai remarqué que mes services de repos ne peuvent traiter qu'une demande à la fois. J'ai essayé quelques configurations différentes pour tenter de permettre à plusieurs requêtes d'être exécutées de manière asynchrone à partir de la même machine client. Je suppose que j'ai manqué une configuration dans le sous-système Wildfly io, mais ma recherche Google ne s'avère pas fructueuse. Au début, je pensais que c'était un problème de navigateur que j'utilisais Chrome, IE et Firefox. J'ai ensuite créé un client Java multithread pour envoyer plusieurs demandes et j'ai toujours rencontré le problème. J'ai créé un script Perl multithread pour envoyer plusieurs requêtes, toujours le même problème ... le service de repos ne traitera qu'une requête à la fois et les autres seront mis en file d'attente. D'après mes tests, il semblerait que les logiciels envoient les demandes selon les besoins. J'ai utilisé WireShark et voir toutes les demandes quittant le logiciel et essayant de frapper les serveurs.Wildfly 10.1 sur Red Hat bloquant les requêtes Web

J'ai essayé d'éliminer les facteurs tels que les équilibreurs de charge et Apache du mélange en insistant sur le fait qu'il doit être Wildfly. Dans mes tests locaux, je pointe directement sur Wildfly et vois le même comportement. Sans introduire aucun type d'infrastructure supplémentaire pour le repos ou le traitement XML, je voudrais appeler le même service simultanément sur X nombre de demandes.

Pour référence, l'ensemble de l'architecture du réseau est client -> (SSL) BigIP LB -> (SSL) Apache -> (AJP/SSL) wildfly

J'ai mis à jour le sous-système wildfly io augmenter le nombre de threads de travail et a augmenté la tâche-max-fils:

{ 
    "outcome" => "success", 
    "result" => { 
     "buffer-pool" => {"default" => { 
      "buffer-size" => undefined, 
      "buffers-per-slice" => undefined, 
      "direct-buffers" => undefined 
     }}, 
     "worker" => {"default" => { 
      "io-threads" => 50, 
      "stack-size" => 0L, 
      "task-keepalive" => 60, 
      "task-max-threads" => 300 
     }} 
    } 
} 

quelqu'un peut-il proposer si le problème est un problème de configuration wildfly, ou est-ce un problème Java servlets, peut-être même un problème de printemps?

Merci.

+0

Avez-vous besoin de faire du REST de manière asynchrone? https://spring.io/guides/gs/async-method/ –

+0

J'ai besoin que les appels soient synchrones puisque j'ai besoin des réponses tout de suite. J'essaie d'exécuter plusieurs téléchargements de données à la fois et d'agir sur les réponses dans un scénario, un autre scénario essayant simplement de saisir plusieurs ensembles de données à la fois pour la présentation – javafreak

+0

Un simple Spring/Widlfy/Spring MVC semble gérer plusieurs demandes simultanément pour moi. –

Répondre

0

Cela a été un problème avec ma journalisation, je vois le traitement des transactions simultanément. Après une analyse plus approfondie, tout fonctionne comme prévu.