3 votes

Définir la priorité pour des requêtes spécifiques dans le serveur web Apache

Nous avons un site web avec une intégration CometChat pour nos utilisateurs; puisque notre serveur apache reçoit beaucoup de demandes pour le service de chat, nous aimerions définir une priorité différente (plus basse) pour ces demandes, tout en servant avec une priorité plus élevée les autres.

D'après nos connaissances, une manière de faire cela pourrait être d'utiliser mod_qos, qui nous permettrait de limiter le nombre de requêtes dans une période de temps (par exemple les reqs par seconde) pour un chemin spécifique. Ce n'est pas exactement ce que nous aimerions faire, mais cela pourrait être une solution partielle.

Ma question est : y a-t-il une meilleure solution pour prioriser les demandes? Si vous suggérez d'utiliser mod_qos, quelle serait une bonne configuration pour mod_qos pour atteindre ce que j'ai demandé?

Merci

2voto

adaptr Points 16431

Il n'est pas possible de prioriser les requêtes dans le serveur web apache directement.

Cela dit, étant donné qu'apache contient une solution complète de proxy et d'équilibrage de charge prête à l'emploi, il y a beaucoup d'ajustements à faire avec cela.

Vous devriez probablement envisager de créer des proxys vers des backends séparés (qui peuvent fonctionner sur le même serveur) en utilisant ProxyPass

Cela permettrait de séparer les demandes pour le service de chat des autres demandes, et vous pouvez alors décider, proxy par proxy, de la quantité de ressources disponibles à chaque backend pour répondre aux demandes.

Une solution complète dépasserait le cadre de ce format, mais la documentation apache pour mod_proxy vous mettra sur la bonne voie; surtout, explorez les options de ProxyPass qui vous permettent de définir des priorités et des limites de requêtes par backend.

1voto

Kirill Osenkov Points 3902

Si vous proposez des services distincts et que vous êtes limité par le processeur, voici quelques options :

1) Mettre à l'échelle (machine plus grande, avec 8 cœurs de CPU ou plus !)

2) Mettre en parallèle - Une fois que vous atteignez la limite de mise à l'échelle d'une machine, mettez en parallèle, plusieurs machines avec une solution de répartition de charge - Offre une tolérance aux pannes en prime.

Points à considérer :

Séparation des services. Exécutez vos services de chat et web sur des machines ou des clusters différents.

Optimisez votre plateforme, utilisez une solution efficace. Pensez à mettre en cache les requêtes/proxies frontaliers.

D'accord, prenons votre commentaire en compte. La seule autre façon que je peux envisager est la suivante :

exécuter deux instances de httpd (par exemple une sur 8000 (chat) et l'autre sur 8001 (web))

exécuter un proxy inverse à haute vitesse comme nginx sur le port 80.

définir la priorité à une des instances de httpd.

Ajustez votre configuration http.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X