Question Squid ou autres caches HTTP avec SSD Cache Store?


J'envisage de mettre en place un cache squid (ou éventuellement de vernis) sur un système doté de disques SSD.

L'avantage évident est que ces systèmes ont des vitesses de lecture élevées et je m'attends à ce que mes taux de réussite soient assez élevés.

Supposons que je puisse mettre 7 disques SSD dans une configuration RAID. (Il y a des cas qui me permettent de faire beaucoup plus)

Questions de mise en œuvre:

  • Devrais-je utiliser RAID0? (Je pense qu'un lecteur finira par échouer, alors cela semble dangereux.)

  • Devrais-je utiliser RAID10? (Cela réduit de moitié mon empreinte disque, ce qui est coûteux.)

  • Devrais-je utiliser RAID5? (Les disques SSD sont connus pour avoir de "mauvaises" performances d'écriture et des limites d'écriture, et toutes les écritures supplémentaires de parité peuvent ralentir considérablement cette opération.)

  • Devrais-je traiter chaque disque comme son propre magasin de données squid? (Dans quelle mesure squid gère-t-il plusieurs magasins de données? Et que se passe-t-il si l'un d'entre eux échoue?)

  • Devrais-je ignorer les banques de données et créer les disques SSD dans de grandes partitions SWAP et laisser la machine virtuelle Linux le faire? (semble négligé)

Tous les conseils de personnes utilisant des disques SSD dans des environnements de production seraient grandement appréciés. (surtout si vous les utilisez pour les caches HTTP)


9
2018-05-29 20:41


origine


+1 pour une question intéressante, je n'ai jamais envisagé de créer des disques uniquement dans une grande partition swap - Bob
Ouais vraiment intéressant ... bien que je sois fortement enclin à ne pas tomber dans le mouvement des SSD et à simplement ajouter plus de RAM pour cet argent à la place. - Oskar Duveborn
Malheureusement, l’empreinte de cache dont j’ai besoin n’entre pas dans la RAM. J'ai déjà mis en place des caches de calmar sauvegardés sur la RAM pour ces objets. - Joel K


Réponses:


Nous utilisons du vernis sur des lecteurs ssd depuis 9 mois, cela a extrêmement bien fonctionné pour nous. Nous avions précédemment utilisé un cache mémoire uniquement avec un calque carp. Cela a fonctionné, mais la fragmentation de la mémoire était un réel problème nécessitant des redémarrages fréquents. Squid 2.x n’utilisera également qu’un seul cœur, ce qui le rend plutôt inefficace sur le matériel actuel.

Pour notre site, qui utilise très bien le cache, nous voyons environ 10% d’utilisation du processeur sur une machine à 8 cœurs servant un trafic de 100 Mbit / s. Lors de nos tests, nous manquons de bande passante avant d'atteindre les limites de l'unité centrale avec 2 ports de 1 Gb.

J'ai quelques conseils sur l'exécution de vernis avec un cache ssd.

  • Les performances d'écriture aléatoire comptent vraiment. Nous avons essayé plusieurs lecteurs pour les lecteurs ssd avant de nous installer sur Intel x-25m. Nous avons vu des publications ne dépassant pas 0,1 Mo / s pour des écritures aléatoires de 4 ko, nous obtenons des écritures aléatoires de 24 Mo / s de 4 k avec le x-25m.

  • Raid0. Le cache dans la version 2.0 n'est pas persistant, vous n'avez donc pas à vous soucier de la redondance. Cela fait mal les redémarrages, mais ceux-ci sont rares. Vous pouvez faire des choses comme charger une nouvelle config et purger des objets sans redémarrage.

  • mode mmap. Le cache de vernis peut être mmap'd dans un fichier ou utiliser l’espace de permutation. L'utilisation de la permutation n'a pas bien fonctionné pour nous, elle a tendance à utiliser davantage de bande passante d'E / S pour traiter le même volume de trafic. Il y a un readahead de 4 secteurs dans le code de swapin de Linux, nous avons écrit un correctif pour le supprimer mais ne l’avons pas essayé en production.

  • Planificateur de date limite. Avec 2.6.28+, c’est ssd conscient et fonctionne bien. Nous avons essayé noop, mais nous avons constaté que ce délai était plus équitable, car la bande passante d'E / S est limitée.

  • Désactiver la lecture en avance. Puisqu'il n'y a pas de délai de rotation, il est inutile de lire des données supplémentaires simplement parce que vous pourriez en avoir besoin. La bande passante i / o est précieuse pour ces choses.

  • Exécutez 2.6.28+. mmap de beaucoup d’espace sous Linux donne au gestionnaire de mémoire un bon entraînement, mais les patchs lru divisés aident beaucoup. L'utilisation du processeur kswapd a beaucoup chuté lors de la mise à jour.

Nous avons posté notre fichier vcl ainsi que plusieurs outils que nous utilisons avec vernis à lien texte. Le vcl inclut également un hack élégant implémentant un serveur geoiplookup très rapide basé sur la base de données maxmind.


8
2018-06-05 06:25





Je n'utilise pas les disques SSD en tant que caches HTTP, mais je peux faire les observations suivantes:

Tous les disques SSD ne sont pas égaux, vous devez donc être très prudent en choisissant des disques décents. FusionIO fabrique des disques SSD reposant sur le PCIe qui sont très performants (avec une capacité relativement faible), mais coûteux. Les disques SSD X25-E SLC d’Intel sont très performants et plus abordables, mais leur capacité reste faible. Fais tes recherches! Je peux certainement recommander les variantes X25-E SLC, car je les utilise dans des systèmes de production.

Il existe d'autres SSDS qui peuvent vous donner une grande vitesse de lecture / écriture séquentielle, mais l'important pour un cache, par exemple, est l'IO aléatoire. De nombreux SSD offrent à peu près les mêmes performances aléatoires que les disques en rotation. En raison des effets d’amplification sur les disques SSD, les disques en rotation donnent souvent de meilleurs résultats. De nombreux disques SSD ont des contrôleurs de qualité médiocre (par exemple, des contrôleurs JMicron plus anciens), ce qui peut entraîner des performances considérablement dégradées dans certaines situations. Anandtech et d’autres sites font de bonnes comparaisons avec des outils comme iometer.

Et, bien sûr, les disques SSD sont petits. Les Intel X25-E, qui sont, à mon avis, les meilleurs SSD SATA que j'ai vus, ne sont proposés qu'en versions 32 et 64 Go.

Pour les niveaux RAID, les notes de performances RAID standard s'appliquent toujours. Une écriture sur un RAID 5 implique essentiellement la lecture du bloc de données que vous allez modifier, la lecture du bloc de parité, la mise à jour de la parité, l’écriture du bloc de données et l’écriture de la parité, afin que les performances soient encore inférieures à celles des autres systèmes RAID. niveaux, même avec les SSD. Cependant, avec des disques tels que le X25-E ayant des performances d'E / S aléatoires aussi élevées, cela importe probablement moins - car il continuera à surperformer les E / S aléatoires sur des disques en rotation pour une matrice de taille similaire.

D'après ce que j'ai vu, la bande passante du contrôleur RAID est saturée trop tôt pour tirer le meilleur parti d'un ensemble RAID à 7 disques, du moins en ce qui concerne les performances séquentielles. Vous ne pouvez pas obtenir plus de 800 Mo / s sur les modèles actuels de contrôleurs SATA (3ware, areca, etc.). Avoir plus de baies plus petites, sur plusieurs contrôleurs (par exemple, plusieurs RAID1 plutôt qu'un seul RAID10) améliorera cela, bien que les performances individuelles de chaque baie en souffriront.

En ce qui concerne le cache HTTP, je pense qu’il serait préférable de disposer d’un bon nombre de disques en rotation et de beaucoup de RAM. Les objets fréquemment consultés resteront dans la mémoire cache - soit dans la mémoire cache interne de squid, soit dans la mémoire cache fs de votre système d'exploitation. Donner simplement plus de RAM à une machine peut considérablement réduire la charge du disque. Si vous utilisez un cache de calmar volumineux, vous aurez probablement besoin de beaucoup d'espace disque, et les disques SSD hautes performances n'offrent toujours qu'une capacité relativement faible.


1
2018-05-29 21:15



Même les X25-M sont utilisables - Pyrolistical
J'ai fait mes devoirs et je sais éviter le JMicrons. Je pensais surtout à la X25-Ms (Intel MLC) et peut-être à la nouvelle série OCZ Vertex (non JMicron). - Joel K
wow, le sommet d'ocz a une écriture aléatoire maximale plus basse que même le x25-m !!! - Pyrolistical


Je ne connais pas très bien les disques SSD, mais je peux parler du type d’architecture que j’ai utilisée et qui pourrait aider à résoudre certains de vos problèmes.

Frères et sœurs

Dans mon cas, j'ai construit quatre serveurs avec 16 Go de RAM chacun. Je mets 9 Go en tant que cache en mémoire que Squid peut utiliser. Je les ai configurés comme un ensemble de frères et soeurs afin qu'une requête auprès d'un serveur interroge les autres avant de rechercher les données. Au total, j'avais 36 Go de mémoire cache. Je ne voudrais pas avoir plus de quatre frères et sœurs car la communication entre eux commence à s'enliser.

VIP

J'ai configuré un VIP pour les quatre serveurs avec lequel le client peut parler. Cela résout ce qui se passe lorsqu'un serveur tombe en panne.

Les enfants

J'ai configuré mon application Web pour interroger un serveur Squid local s'exécutant sur 127.0.0.1. Ensuite, configurez le parent de cette instance de Squid comme étant le VIP. Cela permet un basculement très rapide en cas de panne de l'ensemble du VIP. Si les parents ne répondent pas, l'enfant interroge directement les services. C'est également pratique si vous utilisez un seul serveur Squid et que vous n'avez pas de VIP. Bien sûr, si l'instance locale Squid sur votre serveur Web tombe en panne, tout s'arrête.

Calmar lui-même

Je n'ai pas vraiment examiné la version 3.0, mais la version 2.x est toujours à thread unique. À un moment donné, vous allez manquer de mémoire tampon CPU ou TCP. Si possible, j'étendrais la cache sur 2 ou 3 boîtes en moins. Vous pouvez également planifier de partitionner vos fermes de squid si le système se développe.

En tout cas, bonne chance avec votre build SSD. Je suis intéressé de savoir comment cela se passera car je vais probablement suivre cette voie à l'avenir.


1
2018-06-12 21:50





Pourquoi envisagez-vous même le raid 10 ou 5. Vous voulez des performances ici. Vous ne vous inquiétez pas si les disques tombent en panne, car c'est un cache uniquement.

Il suffit d'utiliser le raid 0 ou de les séparer. Je pense que séparer serait mieux, car une panne de disque ne réduirait pas tout votre cache.


0
2018-05-29 21:17



Dans quelle mesure Squid récupère-t-il si un seul magasin de données tombe? (évidemment, il faut que je teste cela) RAID5 est un compromis si Squid n’est pas gracieux face à l’échec d’un magasin de données. - Joel K


La documentation de Squid recommande de ne pas utiliser RAID mais de configurer des répertoires de cache supplémentaires sur des disques supplémentaires.


-1
2017-12-23 16:04



Veuillez fournir un lien vers la section correspondante de la documentation Squid. - Andrew Schulman
wiki.squid-cache.org/SquidFaq/RAID - Amos Jeffries