NCache Benchmarks de Performance

2 millions d'opérations/s

(Cluster à 5 nœuds)

Consulter les résultats des performances de NCache dans des environnements distribués. Ces tests ont été réalisés dans un environnement Amazon AWS.

Dans nos derniers benchmarks, nous avons démontré avec succès que NCache peut évoluer de manière linéaire et atteindre 2 millions de transactions par seconde avec seulement un cluster de cache à 5 serveurs. NCache offre ces performances avec une latence inférieure à la microseconde. L'évolutivité est linéaire, ce qui signifie que si vous ajoutez plus de serveurs de cache, NCache fournira un débit de transaction plus élevé.

NCache Graphiques de référence

NCache Graphiques de référence
Voir NCache performances lorsque nous avons ajouté des serveurs de cache au cluster.

Regardez la vidéo d'analyse comparative réelle afin de voir comment ces analyses comparatives ont été effectuées.

Dans cette vidéo, nous allons parler de NCache chiffres d'analyse comparative des performances. NCache est extrêmement rapide et évolutif Mise en cache distribuée en mémoire système pour vos applications .NET et .NET Core et aujourd'hui nous atteindrons 2 millions d'opérations par seconde tout en maintenant une latence inférieure à 3 microsecondes par opération, avec seulement 5 NCache Les serveurs

NCache est linéairement évolutif au-delà de ce point, ce qui signifie que vous pouvez ajouter autant de serveurs que nécessaire, et même si vous ajoutez plus de serveurs, vous obtiendrez plus de capacité de traitement des requêtes, hors de votre Cluster de cache et cela aussi de manière linéaire.

Configuration de référence

Passons en revue notre configuration de référence. J'utilise des serveurs AWS m4xlarge pour mon test. J'en possède cinq. NCache Serveurs, sur lesquels j'ai configuré mon cluster de cache et j'ai 15 serveurs clients, à partir desquels j'exécuterais mes applications et me connecterais à ce cluster de cache.

Configuration matérielle

  • AWS m4.10xlarge
    (40 cœurs, 160 Go de RAM, Ethernet 10 Gbit/s)
  • 5 NCache Serveurs
  • 15 serveurs clients
    2 instances d'application/serveur

Configuration logicielle

  • Windows Server 2016
    Édition Centre de données - x64
  • NCache Enterprise 5.0
  • NCache Cache partitionné
    Pipelining activé

Charger la configuration

  • 1 million d'articles au total
    Tableau d'octets de taille 100 chacun
  • 80:20 Obtenir, mettre à jour le ratio
  • 4 Go de taille de cache / serveur
    30 instances d'application connectées

Configuration de référence

J'utilise Windows Server 2016 comme système d'exploitation, Data Center Edition 64 bits. NCache la version est 5.0 Enterprise et j'utilise NCache Cache partitionné, comme topologie de mise en cache.

Topologie de mise en cache

Voici le schéma architectural de cette topologie : les données sont entièrement réparties en partitions sur tous les serveurs de mise en cache, et les clients se connectent à tous les serveurs pour les requêtes de lecture et d'écriture. Ils utilisent pleinement tous les serveurs simultanément. La réplication n'est pas activée pour cette topologie, mais il existe d'autres topologies, telles que Cache de réplication partitionné, qui est également équipé d'un support de réplication.

Topologie de mise en cache
Topologie de mise en cache

Configuration de l'environnement de référence

J'ai Pipelining Activé. C'est une nouvelle fonctionnalité dans NCache Version 5.0. Son fonctionnement est le suivant : côté client, il cumule toutes les requêtes en cours d'exécution et les applique immédiatement côté serveur, le tout en quelques microsecondes. Son optimisation est donc particulièrement recommandée pour les charges transactionnelles élevées.

Configuration matérielle

  • AWS m4.10xlarge
    (40 cœurs, 160 Go de RAM, Ethernet 10 Gbit/s)
  • 5 NCache Serveurs
  • 15 serveurs clients
    2 instances d'application/serveur

Configuration logicielle

  • Windows Server 2016
    Édition Centre de données - x64
  • NCache Enterprise 5.0
  • NCache Cache partitionné
    Pipelining activé

Charger la configuration

  • 1 million d'articles au total
    Tableau d'octets de taille 100 chacun
  • 80:20 Obtenir, mettre à jour le ratio
  • 4 Go de taille de cache / serveur
    30 instances d'application connectées

Configuration de l'environnement de référence

Concernant les configurations de charge, nous utilisons un million d'éléments au total, qui seront ajoutés au cache et simuleront la charge des requêtes de lecture et d'écriture avec un ratio de 1 % de lectures et 80 % d'écritures. Nous disposons également d'un tableau d'octets de 20 éléments individuels dans le cache. Chaque serveur dispose d'un cache de 100 Go et de 4 instances d'application au total, qui se connecteront au cache.

Population de données

Alors, sans plus attendre, je vais commencer avec la « Population de données » de 1 million d'éléments dans mon Cluster de cache. Voici notre environnement de démonstration. Nous avons 5 NCache Serveurs, comme indiqué précédemment. Pour le moment, il n'y a aucune activité, mais je vais simuler une application cliente qui va se connecter et ajouter un million d'éléments au cache.

Population de données
Population de données

J'ai donc exécuté l'application et vous constaterez qu'un client est connecté sur tous les serveurs de mise en cache, ainsi qu'une activité sur le compteur d'ajouts par seconde. La taille du cache augmente, tout comme le compteur de requêtes par seconde. Et voilà, un million d'éléments ont déjà été ajoutés au cluster de cache. Je peux maintenant commencer à analyser la charge des requêtes en lecture et en écriture. Si je vous montre rapidement les détails de la surveillance, vous constaterez une augmentation du processeur, de la mémoire, des ajouts et des requêtes par seconde, ainsi que du compteur de requêtes, et la taille du cache a également augmenté.

Créer une charge transactionnelle

Je vais maintenant exécuter l'application pour générer une charge transactionnelle sur ce cluster de cache, avec 80 % de lectures et 20 % d'écritures. Exécutons-le rapidement. Vous commencerez alors à voir l'activité sur tous les serveurs de cache dans les compteurs PerfMon.

1 million de requêtes / seconde

Vous pouvez voir le nombre de compteurs de clients affichant environ 10 clients, vous savez, des instances connectées à chacun NCache Le serveur, avec une activité sur les récupérations et les mises à jour par seconde, et le compteur de requêtes par seconde, se situe entre 180,000 190,000 et 5 XNUMX requêtes par seconde. Et comme nous en avons XNUMX NCache serveurs, qui fonctionnent en parallèle, donc, l'accumulation de ces requêtes nous apporte, vous savez, 1 million de requêtes par seconde par ce cluster de cache, et vous pouvez voir assez cohérent diffusion des données.

1 million de requêtes / seconde
1 million de requêtes / seconde

Les statistiques de surveillance Web sont plutôt bonnes, avec une mémoire système et un processeur plutôt faibles, avec des récupérations et des requêtes par seconde de 200,000 150,000 requêtes par seconde et environ 50,000 10 récupérations par seconde. Les mises à jour sont de XNUMX XNUMX mises à jour par seconde. La durée moyenne d'une opération de cache est légèrement inférieure à XNUMX microsecondes. C'est l'atout principal de ce cluster de cache : il est en mémoire et garantit une faible latence et un débit élevé. NCache Cluster de cache.

Notre première étape est terminée : nous avons atteint 1 million d’opérations par seconde pour notre cluster de cache. Voici une capture d’écran pour référence : nous enregistrons 200,000 XNUMX requêtes par seconde pour chaque cluster. NCache Serveur et nous en avons 5 NCache Les serveurs, tout en maintenant une latence opérationnelle inférieure à 10 microsecondes par cache.

1 million de requêtes/seconde atteintes
1 million de requêtes/seconde atteintes

Donc, c'est assez rapide par opération, et nous avons un mélange assez cohérent de récupérations ainsi que de mises à jour par seconde, pour illustrer un scénario d'application réel, et en même temps, nous avons une utilisation très efficace du processeur et de la mémoire, où nous avons très peu d'utilisation de ces ressources, pour ce test particulier.

1.5 million de requêtes / s

Maintenant que nous avons atteint 1 million de requêtes par seconde, il est temps d'augmenter la charge. J'exécuterais donc davantage d'instances d'application pour augmenter la charge transactionnelle. Dès leur exécution, le compteur de requêtes par seconde augmenterait.

1.5 million de requêtes / seconde
1.5 million de requêtes / seconde

Tout d'abord, vous pouvez remarquer que le nombre de clients est de 20. 20 instances qui sont connectées à tous NCache Serveurs et nous avons un compteur de requêtes par seconde affichant désormais 300,000 XNUMX requêtes par seconde pour chaque NCache Serveur, et nous avons réussi à atteindre 1.5 million de requêtes par seconde, à partir de ce cluster de cache.

Laissez-moi vous montrer rapidement le Outil de surveillance WebPour les statistiques de performances, vous pouvez consulter les requêtes par seconde pour chaque serveur : 300,000 200,000 requêtes par seconde. Les récupérations sont légèrement supérieures à 50,000 100,000 et les mises à jour entre 4 XNUMX et XNUMX XNUMX. La durée moyenne par opération de cache est inférieure à XNUMX microsecondes, ce qui est remarquable car notre latence est très faible, ce qui est dû à l'impact de…PipeliningLorsque la charge transactionnelle côté client est élevée, le pipelining est très utile : il réduit la latence et augmente le débit. C'est pourquoi nous recommandons son activation.

Notre deuxième étape est maintenant terminée, avec 1.5 million d'opérations par seconde pour notre cluster de cache. Voici une capture d'écran de ce résultat.

1.5 million de requêtes/seconde atteintes
1.5 million de requêtes/seconde atteintes

Nous avons maintenant 300,000 XNUMX requêtes par seconde pour chaque NCache Serveur. La latence a donc été augmentée et notre latence a diminué. Nous avons atteint une moyenne de quelques microsecondes par opération de cache, passant désormais à environ 3 à 4 microsecondes par opération. C'est une nette amélioration, et nous avons, là encore, un bon équilibre entre récupérations et mises à jour, tout en maintenant une utilisation réduite du processeur et de la mémoire. Nos serveurs ne sont donc pas encore saturés. Je tiens à préciser qu'il est possible d'augmenter encore la charge, ce que nous allons faire prochainement.

2 million de requêtes / s

Après avoir atteint 1.5 million de requêtes par seconde, je ne m'arrêterais pas là. Augmentez encore la charge et voyons comment. NCache Le cluster de cache se comporte ainsi. J'exécute donc d'autres instances d'application, et vous constaterez une nouvelle augmentation du compteur de requêtes par seconde. Vous pouvez voir 30 clients, et les instances sont désormais connectées à tous. NCache Serveurs et nous constatons déjà une augmentation du compteur de requêtes par seconde.

2 million de requêtes / seconde
1.5 million de requêtes / seconde

Vous pouvez maintenant voir que nous avons atteint avec succès 400,000 XNUMX requêtes par seconde à chaque fois NCache Serveur. Et nous en avons 5 NCache Serveurs, donc, cela fait un total de 2 millions de requêtes par seconde d'ici là NCache Cluster de cache. Ainsi, en augmentant la charge transactionnelle côté client, on peut clairement voir : NCache Nous avons atteint 2 millions de requêtes par seconde. Nous affichons une moyenne de microsecondes par opération de cache inférieure à 3 microsecondes. De plus, la mémoire système et le temps processeur sont bien en dessous des limites, avec une utilisation de 40 à 50 % sur les deux fronts.

Comme vous pouvez le constater, nous avons atteint 2 millions d'opérations par seconde. Examinons ces résultats à l'aide d'une capture d'écran.

NCache Statistiques de référence
Voir NCache surveiller les statistiques alors que nous avons atteint 2 millions d'opérations/sec.

Nous avons maintenant 400,000 XNUMX requêtes par seconde pour chaque NCache Serveur, ce qui représente un total de 2 millions de requêtes par seconde. Heureusement, la latence a encore diminué. La latence par opération de cache est désormais de 2 à 3 microsecondes, ce qui représente une amélioration par rapport au résultat précédent. On observe à nouveau un mélange d'extractions et de mises à jour, ainsi qu'une utilisation relativement efficace des ressources CPU et mémoire.

Et comme je l'ai dit, NCache is linéairement évolutif, alors, examinons nos chiffres d'évolutivité. Vous savez, en augmentant le nombre de serveurs, on peut voir NCache évolue de façon assez linéaire. Avec 5 NCache serveurs, nous avons pu atteindre 2 millions de requêtes par seconde, et vous pouvez ajouter de plus en plus de serveurs, et cette tendance serait encore plus linéaire, où plus de serveurs signifient plus de capacité de traitement des requêtes, sur NCache.

Conclusion

Ceci nous amène à la fin de notre vidéo. Tous ces résultats de tests et exemples d'applications sont disponibles sur notre site web. Vous pouvez les télécharger et les consulter vous-même, dans votre environnement. Pour toute question, n'hésitez pas à contacter notre service commercial (sales@alachisoft.com) ainsi qu'avec notre soutien (support@alachisoft.com) Équipe. Merci beaucoup pour votre temps.

Rubriques connexes

NCache Introduction (09 min 28 s)
NCache Architecture (17 min 39 s)

Que faire ensuite?

Contactez-Nous

TÉLÉPHONE

+1 214-619-2601 (Etats-Unis)

© Copyright Alachisoft 2002 - . Tous droits réservés. NCache est une marque déposée de Diyatech Corp.