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 in ambiente Amazon AWS.

Nei nostri ultimi benchmark lo abbiamo dimostrato con successo 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 NCache numeri di benchmarking delle prestazioni. NCache è un dispositivo estremamente veloce e scalabile Caching distribuito in memoria sistema per il tuo .NET e .NET Core applicazioni e oggi raggiungeremo 2 milioni di operazioni al secondo e, allo stesso tempo, manteniamo una latenza inferiore a 3 microsecondi per operazione, con appena 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 più capacità di gestione delle richieste, dal tuo Cluster di cache e anche questo in modo lineare.

Impostazione del benchmark

Esaminiamo la nostra configurazione del benchmark. Sto usando 'AWS m4. Server 10xlarge per il mio test. Ne ho cinque NCache Server, su cui ho configurato il mio cluster di cache e ho 15 server client, da cui eseguirei le mie applicazioni e mi collegherei a questo cluster di cache.

Impostazione del benchmark
Impostazione del benchmark

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

Topologia di memorizzazione nella cache

È il diagramma architettonico di questa topologia, in cui abbiamo i dati completamente distribuiti in partizioni, su tutti i server di memorizzazione nella cache e i client si connettono a tutti i server per le richieste di lettura e scrittura. Utilizzano pienamente tutti i server anche in questo allo stesso tempo. Non abbiamo la replica attivata per questa topologia, ma esistono altre topologie, ad esempio Cache di replica partizionata, anch'esso dotato di supporto per la replica.

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, accumuli tutte le richieste che si verificano in fase di esecuzione e le applichi immediatamente sul lato server e l'accumulo avvenga entro microsecondi. Quindi, è molto ottimizzato ed è un'installazione o una configurazione molto consigliata quando si hanno requisiti di carico transazionale elevati.

Configurazione dell'ambiente di riferimento
Configurazione dell'ambiente di riferimento

Per quanto riguarda le configurazioni di carico, stiamo utilizzando 1 milione di elementi in totale, che verranno aggiunti nella cache e quindi simuleranno il carico delle richieste di lettura e scrittura con un rapporto dell'80% di letture e del 20% di scritture su la cache. E abbiamo un array di byte di 100 ciascuno, come singolo elemento nella cache. Ho una dimensione della cache di 4 GB per server e abbiamo un totale di 30 istanze dell'applicazione, che si collegheranno alla cache.

Popolazione di dati

Quindi, senza alcun ritardo, inizierò con la "Popolazione di dati" di 1 milione di articoli nel mio Cluster di cache. Ora, questo è il nostro ambiente demo. ne 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 di dati
Popolazione di dati

Quindi, ho eseguito l'applicazione e vedresti 1 client connesso su tutti i server di memorizzazione nella cache e abbiamo attività sulle aggiunte al secondo contatore su tutti i server. La dimensione della cache aumenta e anche il contatore del conteggio aumenta e le richieste al secondo rappresentano un numero totale di richieste al secondo. E, il gioco è fatto, 1 milione di elementi sono già stati aggiunti al cluster di cache. Ora posso, sai, iniziare con il caricamento delle richieste di lettura e scrittura e, se ti mostro rapidamente i dettagli del monitoraggio, puoi vedere un blip in, sai, aumento della CPU, della memoria, aggiunte al secondo e richieste al secondo e anche nel contatore del conteggio e anche la dimensione della cache è aumentata.

Crea carico transazionale

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

1 milione di richieste/secondo

Puoi vedere il numero di contatori dei clienti che mostrano circa 10 client, sai, istanze collegate a ciascuno NCache server, con attività sui Recuperi e sugli Aggiornamenti al secondo e il contatore Richieste al secondo è compreso tra 180,000 e 190,000 richieste al secondo. E, dato che ne abbiamo 5 NCache server, che funzionano in parallelo, quindi, accumulare queste richieste ci porta, sai, 1 milione di richieste al secondo da questo cluster di cache e puoi vedere abbastanza coerenti distribuzione dei dati.

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

Le statistiche di monitoraggio Web sono piuttosto sane, con memoria di sistema e CPU piuttosto basse, con Recupero al secondo e Richieste al secondo, che mostrano 200,000 Richieste al secondo, circa 150,000 Recupero al secondo. Gli aggiornamenti sono 50,000 aggiornamenti al secondo. Inoltre, la media di un microsecondo per operazione di cache è di poco inferiore a 10 microsecondi per operazione. E questa è la cosa migliore di questo cluster di cache, in cui è in memoria e garantisce una bassa latenza e un elevato throughput dal tuo NCache Cluster di cache.

La nostra prima fase è stata completata in cui 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 per ciascuno NCache Server e ne abbiamo 5 NCache Server, pur mantenendo una latenza operativa inferiore a 10 microsecondi per cache.

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

Quindi, è abbastanza veloce per operazione e abbiamo un mix abbastanza 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, dove abbiamo un utilizzo molto inferiore per queste risorse, per questo particolare test.

1.5 milioni di richieste / sec

Ora che abbiamo raggiunto 1 milione di richieste al secondo, è il momento di aumentare il carico. Quindi, eseguirei alcune istanze dell'applicazione in più, per aumentare il carico transazionale e non appena queste applicazioni verranno eseguite, vedresti un aumento del contatore delle richieste al secondo.

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

Prima di tutto puoi notare che il numero di Client è 20. 20 istanze che sono collegate a tutti NCache Server e abbiamo il contatore Richieste al secondo che ora mostra 300,000 richieste al secondo ciascuno NCache Server e abbiamo raggiunto con successo 1.5 milioni di richieste al secondo da questo cluster di cache.

Lascia che ti mostri rapidamente il Strumento di monitoraggio web, per le statistiche sulle prestazioni. Puoi vedere le Richieste al secondo per ogni Server, 300,000 Richieste al secondo. I recuperi sono poco più di 200,000 recuperi al secondo e gli aggiornamenti sono compresi tra 50,000 e 100,000. E puoi vedere un funzionamento medio di microsecondi per cache inferiore a 4 microsecondi, è sorprendente perché abbiamo una latenza molto bassa e questo è un impatto di 'pipelining'. Quando si dispone di un carico transazionale elevato dall'estremità client, il pipelining aiuta davvero e riduce la latenza e aumenta il throughput. E quindi è per questo che possiamo consigliare di attivarlo.

La nostra fase due è ora completata, dove abbiamo raggiunto 1.5 milioni di operazioni al secondo dal nostro cluster di cache. Ecco uno screenshot per questo risultato.

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

Ora abbiamo 300,000 richieste al secondo ciascuno NCache Server. Quindi, è stato aumentato e la nostra latenza è diminuita. Abbiamo una media di microsecondi per operazione di cache, ora impiegando da 3 a 4 microsecondi per operazione di cache. Quindi, questo è un enorme miglioramento e, ancora una volta, abbiamo un bel mix di Recupero e Aggiornamenti e di nuovo mantenendo un minore utilizzo della CPU e della memoria. Quindi, i nostri server non sono al massimo a questo punto. Voglio chiarire che puoi allungare ulteriormente il carico, cosa che faremo dopo.

2 milioni di richieste / sec

Dopo aver raggiunto 1.5 milioni di richieste al secondo, non mi fermerei qui. Aumentiamo ulteriormente il carico e vediamo come NCache Cache Cluster si comporta di conseguenza. Quindi, sto eseguendo altre istanze dell'applicazione e vedresti un ulteriore aumento del contatore di richieste al secondo. Puoi vedere 30 client, sai, le istanze ora sono collegate a tutti NCache Server e stiamo già assistendo a un aumento del contatore Richieste al secondo.

2 milione di richieste/secondo
1.5 milione di richieste/secondo

Ora puoi vedere che abbiamo toccato con successo 400,000 richieste al secondo per ciascuno NCache Server. E ne abbiamo 5 NCache Server, quindi, per un totale di 2 milioni di richieste al secondo NCache Cluster di cache. Quindi, aumentando il carico delle transazioni dal client-end puoi vedere chiaramente, NCache ha raggiunto 2 milioni di richieste al secondo. E abbiamo un'operazione media di microsecondi per cache inferiore a 3 microsecondi e abbiamo anche memoria di sistema e tempo del processore, sai, CPU ben al di sotto dei limiti, dove abbiamo un utilizzo dal 40% al 50%, su entrambi i fronti.

Come ora puoi vedere, abbiamo raggiunto con successo 2 milioni di operazioni al secondo. Quindi, esaminiamo 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 ciascuno NCache Server, che fa un totale di 2 milioni di richieste al secondo e la cosa bella è che la latenza ha un ulteriore calo. Ora abbiamo da 2 a 3 microsecondi per latenza operativa della cache, e questo è ancora una volta un miglioramento rispetto al risultato precedente. Puoi di nuovo vedere un mix di Recupero e Aggiornamenti e un utilizzo abbastanza efficiente della CPU, nonché delle risorse di memoria.

E come ho detto, NCache is linearmente scalabile, quindi, esaminiamo i nostri numeri di scalabilità. Sai, aumentando il numero di server, puoi vedere NCache scala in modo abbastanza lineare. Con 5 NCache server, siamo stati in grado di raggiungere 2 milioni di richieste al secondo e puoi 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 questi risultati di test e applicazioni di esempio sono disponibili sul nostro sito Web, che puoi scaricare e rivedere tu stesso, nel tuo ambiente. E se ci sono domande, non esitare a metterti in contatto con le nostre vendite (sales@alachisoft.com) nonché con il nostro supporto (support@alachisoft.com) squadra. La ringrazio molto per il vostro tempo.

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