NCache Benchmark delle prestazioni

2 milioni di operazioni/sec

(cluster a 5 nodi)

Verifica i risultati delle prestazioni di NCache in ambienti distribuiti. Questi test sono stati condotti nell'ambiente Amazon AWS.

Nei nostri ultimi benchmark, abbiamo dimostrato con successo che NCache può scalare linearmente e raggiungere 2 milioni di transazioni al secondo con solo un cluster di cache a 5 server. NCache offre queste prestazioni con una latenza inferiore al microsecondo. La scalabilità è lineare, il che significa che se si aggiungono più server cache, NCache fornirà una maggiore velocità di transazione.

NCache Grafici di riferimento

NCache Grafici di riferimento
See NCache prestazioni quando abbiamo aggiunto i server cache al cluster.

Guarda il video di benchmarking effettivo in modo da poter vedere come sono stati eseguiti questi benchmark.

In questo video parleremo di NCache numeri di benchmarking delle prestazioni. NCache è estremamente veloce e scalabile Caching distribuito in memoria sistema per le tue applicazioni .NET e .NET Core e oggi raggiungeremo 2 milioni di operazioni al secondo e, allo stesso tempo, manterremo una latenza inferiore a 3 microsecondi per operazione, con solo 5 NCache Server.

NCache è linearmente scalabile oltre questo punto, il che significa che puoi aggiungere tutti i server di cui hai bisogno e, mentre aggiungeresti più server, otterresti una maggiore capacità di gestione delle richieste, dal tuo Cluster di cache e anche questo in modo lineare.

Impostazione del benchmark

Diamo un'occhiata alla nostra configurazione di benchmark. Per il mio test utilizzo server 'AWS m4. 10xlarge'. Ne ho cinque. NCache Server, sui quali ho configurato il mio Cache Cluster e ho 15 Client Server, dai quali posso eseguire le mie applicazioni e connettermi a questo cache cluster.

Configurazione hardware

  • AWS m4.10xlarge
    (40 core, 160 GB di RAM, Ethernet da 10 Gbps)
  • 5 NCache Server
  • 15 server client
    2 istanze dell'app/server

Configurazione software

  • Di Windows Server 2016
    Edizione Data Center - x64
  • NCache Enterprise 5.0
  • NCache Cache partizionata
    Pipelining abilitato

Carica configurazione

  • 1 milione di articoli totali
    Array di byte di dimensione 100 ciascuno
  • Rapporto di aggiornamento 80:20
  • Dimensione cache 4 GB / Server
    30 istanze di app connesse

Impostazione del benchmark

Utilizzo Windows Server 2016 come sistema operativo, Data Center Edition a 64 bit. NCache la versione è 5.0 Enterprise e la sto usando NCache Cache partizionata, come topologia di memorizzazione nella cache.

Topologia di memorizzazione nella cache

Si tratta del diagramma architetturale di questa topologia, in cui i dati sono completamente distribuiti in partizioni su tutti i server di caching e i client si connettono a tutti i server per richieste di lettura e scrittura. Utilizzano appieno tutti i server contemporaneamente. Non abbiamo la replicazione attivata per questa topologia, ma esistono altre topologie, come Cache replica partizionata, che è anche dotato di supporto per la replicazione.

Topologia di memorizzazione nella cache
Topologia di memorizzazione nella cache

Configurazione dell'ambiente di riferimento

Ho pipelining Abilitato. Questa è una nuova funzionalità in NCache Versione 5.0. Funziona in modo tale che, sul lato client, accumula tutte le richieste in esecuzione e le applica contemporaneamente sul lato server, con un accumulo che avviene in pochi microsecondi. È quindi un'impostazione o configurazione altamente ottimizzata e vivamente consigliata quando si hanno requisiti di carico transazionale elevati.

Configurazione hardware

  • AWS m4.10xlarge
    (40 core, 160 GB di RAM, Ethernet da 10 Gbps)
  • 5 NCache Server
  • 15 server client
    2 istanze dell'app/server

Configurazione software

  • Di Windows Server 2016
    Edizione Data Center - x64
  • NCache Enterprise 5.0
  • NCache Cache partizionata
    Pipelining abilitato

Carica configurazione

  • 1 milione di articoli totali
    Array di byte di dimensione 100 ciascuno
  • Rapporto di aggiornamento 80:20
  • Dimensione cache 4 GB / Server
    30 istanze di app connesse

Configurazione dell'ambiente di riferimento

Per quanto riguarda le configurazioni di carico, stiamo utilizzando un totale di 1 milione di elementi, che verranno aggiunti alla cache e poi simuleremo il carico di richieste di lettura e scrittura con un rapporto dell'80% di letture e del 20% di scritture sulla cache. E abbiamo un array di byte da 100 ciascuno, come elemento individuale nella cache. Ho una dimensione di cache di 4 GB per server e abbiamo un totale di 30 istanze di applicazioni, che si connetteranno alla cache.

Popolazione dei dati

Quindi, senza indugi, inizierò con la "popolazione dei dati" di 1 milione di elementi nel mio Cluster di cacheOra, questo è il nostro ambiente demo. Abbiamo 5 NCache server, come discusso in precedenza. Al momento non c'è attività, ma simulerò un'applicazione client che si connetterà e aggiungerà 1 milione di elementi nella cache.

Popolazione dei dati
Popolazione dei dati

Quindi, ho eseguito l'applicazione e vedrete 1 client connesso su tutti i server di caching e abbiamo attività sul contatore delle aggiunte al secondo su tutti i server. La dimensione della cache sta aumentando e anche il contatore del conteggio sta aumentando e le richieste al secondo indicano il numero totale di richieste al secondo. Ed ecco, 1 milione di elementi sono già stati aggiunti al cluster di cache. Ora posso iniziare con il carico delle richieste di lettura e scrittura e, se vi mostro rapidamente i dettagli del monitoraggio, potete vedere un aumento della CPU, della memoria, delle aggiunte al secondo e delle richieste al secondo e anche del contatore del conteggio, e anche la dimensione della cache è aumentata.

Costruire un carico transazionale

Ora eseguirò l'applicazione per generare un carico transazionale su questo cluster di cache, con l'80% di operazioni di lettura e il 20% di operazioni di scrittura. Quindi, procediamo rapidamente. E inizierete a vedere l'attività su tutti i server di cache nei contatori PerfMon.

1 milione di richieste al secondo

Puoi vedere il numero di contatori dei client che mostrano circa 10 client, sai, istanze connesse a ciascuna NCache server, con attività su Fetch e Aggiornamenti al secondo, e il contatore Richieste al secondo è compreso tra 180,000 e 190,000 richieste al secondo. E, poiché abbiamo 5 NCache server, che lavorano in parallelo, quindi, accumulando queste richieste ci porta, sai, 1 milione di richieste al secondo da parte di questo cluster di cache, e puoi vedere abbastanza coerente distribuzione dei dati.

1 milione di richieste al secondo
1 milione di richieste al secondo

Le statistiche di Web Monitoring sono piuttosto buone, con, sapete, memoria di sistema e CPU piuttosto basse, con fetch al secondo e richieste al secondo che mostrano 200,000 richieste al secondo, circa 150,000 fetch al secondo. Gli aggiornamenti sono 50,000 al secondo. E la media di microsecondi per operazione di cache è poco meno di 10 microsecondi per operazione. E questa è la cosa migliore di questo Cache Cluster, dove è in memoria e garantisce bassa latenza e throughput elevato dal tuo NCache Cluster di cache.

La nostra prima fase è completata e abbiamo raggiunto con successo 1 milione di operazioni al secondo dal nostro cluster di cache. Ho uno screenshot come riferimento, dove abbiamo 200,000 richieste al secondo da parte di ciascuno. NCache Server e ne abbiamo 5 di questi NCache Server, mantenendo al contempo una latenza operativa inferiore a 10 microsecondi per cache.

1 milione di richieste / secondo raggiunto
1 milione di richieste / secondo raggiunto

Quindi, è piuttosto veloce per operazione e abbiamo un mix piuttosto coerente di recuperi e aggiornamenti al secondo, per mostrare uno scenario applicativo reale e, allo stesso tempo, abbiamo un utilizzo molto efficiente di CPU e memoria, mentre abbiamo un utilizzo molto ridotto di queste risorse, per questo particolare test.

1.5 milioni di richieste / secondo

Ora che abbiamo raggiunto 1 milione di richieste al secondo, è il momento di aumentare il carico. Quindi, eseguirei altre istanze dell'applicazione per aumentare il carico transazionale e, non appena queste applicazioni saranno eseguite, vedrete un aumento nel contatore delle richieste al secondo.

1.5 milione di richieste al secondo
1.5 milione di richieste al secondo

Innanzitutto puoi notare che il numero di client è 20. 20 istanze che sono connesse a tutte NCache Server e abbiamo un contatore di richieste al secondo che ora mostra 300,000 richieste al secondo per ciascuno NCache Server e abbiamo raggiunto con successo 1.5 milioni di richieste al secondo da questo cluster di cache.

Lasciatemi mostrarvi velocemente il Strumento di monitoraggio web, per le statistiche sulle prestazioni. Puoi vedere le richieste al secondo per ciascun server, 300,000 richieste al secondo. I recuperi sono poco più di 200,000 recuperi al secondo e gli aggiornamenti sono tra 50,000 e 100,000. E puoi vedere una media di microsecondi per operazione nella cache inferiore a 4 microsecondi, il che è sorprendente perché abbiamo una latenza molto bassa e questo è un impatto di 'pipelining'. Quando si ha un carico transazionale elevato dal lato client, il pipelining è davvero utile e riduce la latenza, aumentando la produttività. Ecco perché consigliamo di attivarlo.

La nostra seconda fase è ora completata, con 1.5 milioni di operazioni al secondo dal nostro Cache Cluster. Ecco uno screenshot di questo risultato.

1.5 milione di richieste / secondo raggiunto
1.5 milione di richieste / secondo raggiunto

Ora abbiamo 300,000 richieste al secondo da parte di ciascuno NCache Server. Quindi, questo è stato aumentato e la nostra latenza è diminuita. Abbiamo una media di microsecondi per operazione nella cache, ora impiegando circa 3-4 microsecondi per operazione nella cache. Quindi, si tratta di un enorme miglioramento e, ancora una volta, abbiamo un buon mix di recuperi e aggiornamenti, mantenendo un minore utilizzo di CPU e memoria. Quindi, i nostri server non sono al massimo delle loro capacità in questo momento. Voglio chiarire che è possibile estendere ulteriormente il carico, cosa che faremo in seguito.

2 milioni di richieste / secondo

Dopo aver raggiunto 1.5 milioni di richieste al secondo, non mi fermerei qui. Aumentiamo ulteriormente il carico e vediamo come NCache Il Cache Cluster si comporta di conseguenza. Quindi, eseguo altre istanze dell'applicazione e si nota un ulteriore aumento nel contatore delle richieste al secondo. Si possono vedere 30 client, le istanze sono ora connesse a tutti. NCache Server e stiamo già assistendo a un aumento del contatore delle richieste al secondo.

2 milione di richieste al secondo
1.5 milione di richieste al secondo

Ora puoi vedere che abbiamo raggiunto con successo 400,000 richieste al secondo da parte di ciascuno NCache Server. E ne abbiamo 5 NCache Server, quindi, questo fa un totale di 2 milioni di richieste al secondo da parte di questo NCache Cluster di cache. Quindi, aumentando il carico delle transazioni dal lato client, è possibile vedere chiaramente, NCache ha raggiunto 2 milioni di richieste al secondo. E abbiamo una media di microsecondi per operazione di cache inferiore a 3 microsecondi e abbiamo anche memoria di sistema e tempo di elaborazione, sapete, CPU ben al di sotto dei limiti, dove abbiamo un utilizzo dal 40% al 50%, su entrambi i fronti.

Come potete vedere, abbiamo raggiunto con successo 2 milioni di operazioni al secondo. Esaminiamo quindi questi risultati con l'aiuto di uno screenshot.

NCache Statistiche di riferimento
See NCache monitoraggio delle statistiche quando abbiamo raggiunto 2 milioni di operazioni/sec.

Ora abbiamo 400,000 richieste al secondo da parte di ciascuno NCache Server, che gestisce un totale di 2 milioni di richieste al secondo, e la cosa positiva è che la latenza è ulteriormente diminuita. Ora abbiamo una latenza di 2-3 microsecondi per operazione di cache, un ulteriore miglioramento rispetto al risultato precedente. Si può nuovamente osservare un mix di recuperi e aggiornamenti e un utilizzo piuttosto efficiente delle risorse di CPU e memoria.

E come ho detto, NCache is linearmente scalabile, quindi, rivediamo i nostri numeri di scalabilità. Sai, aumentando il numero di server, puoi vedere NCache si sviluppa in modo piuttosto lineare. Con 5 NCache server, siamo stati in grado di raggiungere 2 milioni di richieste al secondo, e si possono aggiungere sempre più server, e questa tendenza sarebbe ulteriormente lineare, dove più server significano più capacità di gestione delle richieste, su NCache.

Conclusione

Questo ci porta verso la fine del nostro video. Tutti i risultati dei test e le applicazioni di esempio sono disponibili sul nostro sito web, dove potete scaricarli e consultarli autonomamente, nel vostro ambiente. Per qualsiasi domanda, non esitate a contattare il nostro team commerciale (sales@alachisoft.com) e con il nostro supporto (support@alachisoft.com) team. Grazie mille per il tempo che ci avete dedicato.

Contenuto relativo

NCache Introduzione (09:28 minuti)
NCache Architettura (17:39 minuti)

Cosa fare dopo?

© Copyright Alachisoft 2002 - . Tutti i diritti riservati. NCache è un marchio registrato di Diyatech Corp.