Optimisation httpd Serveurs pour les utilisateurs de 50-100k

Actuellement j'ai une instance AWS EC2

m5.24xlarge

qui a :

96 CPU virtuel

384 RAM

Réseau 25 livres sterling

Actuellement nous attendons plus 50 000 Utilisateurs simultanés en ligne, j'ai ajouté une couche flash nuage, mais le problème est que je continue à recevoir

server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting

sur Apache

error_log

.

Quels paramètres Apache mieux adapté au traitement de ce trafic?
Invité:

Giselle

Confirmation de:

J'ai bien peur de le faire mal. Au lieu de lancer une énorme instance méga, vous devriez

Parc de petites copies

Pour équilibrage de charge. Par exemple, remplacé

m5.24xlarge

avec

24 H.


m5.xlarge

, Idéalement B.

Groupe automatisé

avec

Spécimens ponctuels

Pour économiser des coûts.

Voici quelques-unes des raisons:

Si votre grande instance échoue ou nécessite une maintenance, votre site entier échoue. Si la même chose arrive avec l'une des copies plus petites, vous ne perdrez que 1/24 sa capacité.

Vous pouvez ajouter ou supprimer le conteneur lorsque vous modifiez le trafic, par exemple, débranchez automatiquement certains cas le week-end ou la nuit lorsque la demande diminue. Enregistre votre argent.

Vous pouvez automatiser la restauration des instances de flanture, vous pouvez utiliser des copies spot pour économiser de l'argent, etc.

Cela dit que vous deviez peut-être modifier légèrement l'architecture de votre application. Par exemple, si

base de données

En cours d'exécution sur le même cas, vous devrez le déplacer vers

AWS Aurora

Donc, toutes les instances peuvent l'utiliser.

La même chose pour

système de fichiers

- Si votre application stocke des données personnalisées localement, vous devrez peut-être entrer un système de fichiers partagé, tel que

AWS EFS - Système de fichiers élastique

.

Il y a du travail, mais il y a

Énormes avantages de la mise à l'échelle horizontale

(Ajouter un plus grand nombre de petits travailleurs pour effectuer des travaux) comparé à la verticale (Faire un travailleur de plus en plus).

J'espère que cela aidera :)

Catherine

Confirmation de:

En fait, il est possible d'échouer sur une très large instance d'un serveur Web.

Comme suit de l'avertissement httpd, Vous devrez configurer MPM. Premier sélection MPM. L'événement est bon et productif, mais en fonction de vos modules, vous devrez peut-être une pré-fourchette.

https://httpd.apache.org/docs/ ... rkers
Précédemment appelé MaxClient. Augmentez cela autant que votre mémoire le permet. Prendre, par exemple, une procédure simple de
https://serverfault.com/q/266907/241174
Supposons que vous puissiez utiliser 350 GB de mémoire, le reste est conçu pour le système d'exploitation et autres frais généraux. Diviser par RSS Selon le processus

top

. Disons-le 50 MB, et le résultat sera plus 7000. Ceci est votre première hypothèse.

MaxRequestWorkers

.

ServerLimit

doit aussi être plus, essayez 10000.

Regardez le temps de réponse de l'utilisateur sous la charge pour voir comment ça fonctionne 50 000 Dans le même temps, les utilisateurs qui travaillent peuvent ne pas être requis pour un tel nombre de travailleurs afin de poursuivre les demandes de service, mais cela dépend fortement de la demande.

En regardant ce qui se passe, planifiez l'expérience suivante en modifiant le réglage. Peut-être augmenter

ThreadsPerChild

Il réduira le nombre de processus et réduira respectivement l'utilisation de la mémoire.

50 Kb - Ceci est plus que la plage de ports temporaires par défaut dans la plupart des systèmes d'exploitation. Si tout votre trafic provient de la même adresse IP et du même port d'équilibrage de la charge, trouvez des moyens de les contourner.

Pour répondre aux questions, connectez-vous ou registre