2015-11-25 1 views
0

J'ai une application Java qui expose REST.Configuration de ModCluster pour annuler la requête lorsque la charge est pleine

J'ai un maître et 2 esclaves. (jboss7.1.1)

Apache-modcluster prend en charge l'équilibrage de charge.

J'ai des files d'attente maintenues dans mon application qui se remplit parfois, quand il n'y a pas de consommateurs. Par conséquent, je reçois OutOfMemory et le nœud esclave tombe en panne.

Y at-il une configuration dans Apache Modcluster pour vérifier la charge et bloquer demandes entrantes, en dépit du routage juste?

Ou une suggestion différente?

Répondre

1

Pour autant que je sache, vous ne pouvez acheminer les demandes en fonction de la charge (à l'aide d'un LoadMetric), ne pas les bloquer

Je suggère que vous devriez concevoir vous API pour retourner un code de réponse différent (509 ou 503 peut-être) lorsque vos files d'attente sont pleines et que le noeud jboss ne peut pas traiter la demande, vous pouvez demander aux consommateurs de l'API de réessayer après un délai s'ils rencontrent l'une de ces réponses

Il est possible de 'limiter le débit' apache en utilisant quelque chose comme mod_security (voir: https://johnleach.co.uk/words/1073/rate-limiting-with-apache-and-mod-security), mais je pense que le contrôle de ce dans le code de votre application serait mieux