Combien de domaines sur un seul serveur Apache?

9

J'héberge environ 300 domaines pour mes clients sur un seul serveur Apache. Ils n'ont pas tous beaucoup de trafic, donc la charge du serveur n'est pas un problème.

Théoriquement, il ne devrait pas y avoir de limite au nombre de ces domaines à faible trafic que je peux avoir sur le serveur, mais je crains que si j'ai trop de domaines sur le serveur, la simple liste de domaines à vérifier pour chaque demande entrante ralentira Apache. vers le bas.

Existe-t-il une règle empirique sur la durée d'une configuration Apache et le nombre de domaines différents qu'elle peut gérer sans problème? Est-ce que 500 vont bien? 5000?

Clarification: je ne demande pas combien de trafic un serveur peut gérer. Je sais que ce serveur spécifique peut gérer au moins le double de son trafic actuel. Je veux savoir si le nombre de domaines est un facteur critique ou non.

Gene Vincent
la source

Réponses:

9

J'ai vu des serveurs avec des milliers de domaines fonctionner sans problème. Les performances ne se dégradent pas de manière significative uniquement en fonction du nombre de sites que vous exécutez.

C'est le nombre total de demandes et la quantité de processeur (et d'autres ressources comme la bande passante, les E / S de disque, les appels de base de données, etc.) nécessaires par demande qui influencent la réactivité du serveur.

splattne
la source
+1 - la quantité de temps CPU nécessaire pour même effectuer une analyse série d'une baie de 10 000 entrées stockées dans la RAM est négligeable.
Mark Henderson
4

Il n'y a pas de règle magique pour ce genre de chose. Tout est basé sur les spécifications matérielles et le réglage du logiciel. Vous n'allez pas ajouter un nouveau site, puis voir votre serveur basculer et s'étouffer à mort (à moins que ce soit un site très utilisé dès la sortie de la porte et que vous ne soyez pas prêt pour cela). Comme pour la plupart des choses, vous devez surveiller les performances de votre serveur et lorsque vous commencez à le voir ralentir, évaluez à ce stade et voyez les mises à niveau matérielles ou un nouveau serveur pour gérer un nouvel hébergement de domaine. Et donc pour répondre à votre point de clarification, il ne s'agit pas du nombre de domaines, mais de ce que chaque domaine apporte individuellement en tant que charge au serveur. Pas de chiffre magique.

Holocryptic
la source
Une réponse aussi spécifique peut être à cette question ...
Nandhini Anand
3
Gene, pour sauvegarder ce que dit Holocryptic, imaginez la charge de travail générée par 500 (ou 5000) sites Web contenant une ou deux pages statiques. Imaginez maintenant la charge de travail générée si vous hébergez un seul site Web. Mais que se passe-t-il si ce site Web est google.com ou facebook.com - le nombre de domaines n'est pas le problème, c'est le travail que ces domaines demandent au serveur de faire.
Rob Moir
@Robert Moir: Je ne pose pas de questions sur le trafic que le serveur peut gérer. Je veux savoir si le nombre de domaines ou la longueur du fichier de configuration est un facteur.
Gene Vincent
3

Vous pouvez trouver http://httpd.apache.org/docs/2.2/vhosts/details.html#hostmatching informatif. Apache utilise une table de hachage pour gérer les VHosts qui ne sont pas mappés à *: 80, puis itère sur une liste liée de tous les VHosts affectés à ce port IP: afin de trouver le serveur correspondant (Nom | Alias). Vous auriez probablement besoin d'héberger des millions de domaines avant que ce processus ne devienne sensiblement coûteux.

Vous pouvez également consulter http://httpd.apache.org/docs/2.2/vhosts/mass.html et les comparer à votre approche actuelle; une fois que vous obtenez suffisamment de VHosts pour que la traversée de la liste liée prenne plus de temps qu'un lstat (), VirtualDocumentRootil finira par être plus rapide que les VHosts spécifiés individuellement.

BMDan
la source
J'utilise des hôtes virtuels basés sur le nom et il semble qu'Apache n'utilise que la table de hachage pour les hôtes virtuels basés sur IP, ce qui entraîne une recherche linéaire.
Gene Vincent
Correct. Désolé si ma réponse n'a pas été aussi claire qu'elle aurait pu l'être sur ce point: la table de hachage est utilisée pour sélectionner la liste chaînée sur laquelle itérer, pas (directement) pour sélectionner le VHost qui doit répondre à une demande donnée (sauf lorsqu'il n'est pas en cours d'exécution) NameVirtualHost).
BMDan
1

J'ai des serveurs VPS qui hébergent environ 8000+ domaines. Le serveur fonctionne correctement, la charge moyenne est toujours au niveau 0.xx. Je suppose qu'il peut gérer plus sans problème. Il faudra plus de temps pour recompiler Apache lors de l'ajout ou de la suppression d'un domaine. De plus, le fichier httpd.conf est assez volumineux, environ 60M. Il est plus sûr de limiter le nombre de domaines à environ 5000.

garconcn
la source