Come posso determinare di quanti IOP ho bisogno per il mio database RDS AWS?


14

Sto migrando parte di un database mysql in AWS. I dati in questione sono scritti al 99% e ogni riga ha circa 1k di campi varchar, un datetime e 4 ints.

Stimo che avremo bisogno tra 20-25k record inseriti / ora nelle ore di punta.

Ho eseguito iostat -h sul database corrente e ha riportato circa 40 tps.

Come faccio a capire quale tipo di IOPS avrò bisogno?

Risposte:


11

Dovrai provarlo.

Potresti fare alcuni calcoli sul retro della busta per approssimare il numero di I / O per inserto, moltiplicarlo per il numero di transazioni al secondo, aggiungere un po 'di buffer room ecc., Ma è molto più semplice testarlo.

La cosa più semplice da fare è allocare un'ipotesi migliore, quindi tornare indietro e aumentarla o diminuirla per adattarla ai test del mondo reale. Questo è uno dei lussi dell'utilizzo di un ambiente basato su cloud, le modifiche hardware sono basse nei costi di capitale e tali modifiche richiedono solitamente solo aggiornamenti di configurazione. Con i volumi EBS non puoi semplicemente aumentare il numero di IOPS, ma dovresti anche aumentare le dimensioni del volume 1 . Puoi sempre creare un nuovo volume e copiare i tuoi dati. Ci saranno dei tempi di inattività, ma se i tuoi dati non sono enormi non dovrebbero essere tanto quanto sarebbero una copia grezza.

Ecco un'ipotesi sul numero di I / O necessari. Anche in questo caso è solo una supposizione poiché le specifiche dipendono dal numero di indici e se il flusso del traffico sarà regolare o acuto. A 25K tx / ora hai ~ 7 tx / sec. La dimensione di ogni riga non è particolarmente rilevante in quanto è inferiore alla dimensione di un singolo I / O (4K). Ogni transazione eseguirà da qualche parte tra 1-5 IOP (inserto primario più un paio di inserti dell'albero dell'indice) quindi diciamo ~ 35 / s.

Dico di iniziare con un minimo di 100 IOPS e di ingrandirli se necessario.


1
A proposito, come seguito di questo: abbiamo creato un database da 300 GB, e questo significava un minimo di 1000 IOPS. Dopo circa 6 mesi dal vivo su RDS ci sono stati 0 incidenti dovuti a problemi di I / O. Probabilmente eccessivo, ma il più vicino al fuoco e dimentica il più possibile.
chris,

In base al carico: non sono necessari IOP sottoposti a provisioning. A meno che non occorrano oltre 2500-3500 IOP totali, la memoria standard funzionerà a 300 GB (a causa dello striping EBS).
Ross,

7

Ho usato lo strumento iostat di base (iostat -h) per farmi un'idea di quanti iops stavo attualmente usando. Da quello ho estrapolato quanto userei se fossi sotto 4 volte quella quantità di carico e andassi con quella quantità. Per me che ha funzionato a 780 IOPS, quindi sono andato con 800 IOPS.


iostat -h riporta circa 40 tps, quindi corrisponde a 40 iops? Ciò corrisponderebbe ai numeri calcolati da @sehrope.
chris,

1
È corretto.
Marco D

0

Uso iostat per determinare la quantità di IOPS eseguite dalla mia applicazione. iostat lo segnala come tps. KB / t ti aiuta a determinare se la quantità del trasferimento è inferiore alla dimensione del blocco, 256 KiB. Corro iostat con un tempo di attesa di un secondo, cioè iostat -w 1.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.