Amazon RDS: quali sono le richieste IO?


9

Ho un'istanza RDS che mi sta costando un sacco di soldi. Dall'attività del mio account su Amazon vedo che l'istanza ha ricevuto circa 800.000.000 di richieste IO negli ultimi 7 giorni.

Per darti una piccola prospettiva, la mia app riceve solo circa 6.000 visite uniche al giorno e non crea molte connessioni al database.

Quindi, cos'è esattamente una richiesta IO e perché quel numero dovrebbe essere così soprannaturale? Sono disposto a fare tutto il necessario per la mia app per ridurre i costi, se necessario, ma non sono sicuro di cosa stia realmente succedendo.

Gradirei i tuoi pensieri.


Hai trovato una soluzione nel tuo caso?
Fai clic su Ottimizza

Risposte:


6

Ah, Amazon Web Services. Uno dei più grandi soldi disponibili. Molto buono, ma non sempre economico. In realtà, quasi mai economico, e sempre difficile stimare le spese.

Una richiesta IO è un'operazione su disco. Sia che si tratti di una lettura o di una scrittura, in pratica ti viene addebitato il numero di dati che stai scaricando dal loro sistema. È da pazzi.

Puoi stimare le richieste di I / O che stai facendo, guardando iostat.

800.000.000 richieste IO in 7 giorni .. Questo è ~ = 1300 IOPS. Wow. Questa è una prestazione maledetta.

Ad esempio, un database di siti Web di medie dimensioni potrebbe avere dimensioni di 100 GB e prevedere una media di 100 I / O al secondo nel corso di un mese. Ciò si tradurrebbe in $ 10 al mese in costi di archiviazione (100 GB x $ 0,10 / mese) e circa $ 26 al mese in costi di richiesta (~ 2,6 milioni di secondi / mese x 100 I / O al secondo * $ 0,10 per milione di I / O).

Da http://aws.amazon.com/ebs/ circa il 90% della pagina

Se vuoi davvero ridurre ciò che ti costa, potrebbe essere il momento di vedere se RDS è davvero la soluzione migliore per la tua applicazione e il budget del progetto.

Se hai solo 6k hit al giorno, potresti fare di meglio in termini di costi e prestazioni con un server dedicato (preferibilmente 2 di essi, uno per DB, uno per i servizi Web). In realtà è un po 'più difficile effettuare quella chiamata poiché non hai detto molto di più sulla tua applicazione.


3
Quando ho sperimentato per la prima volta il servizio AWD SimpleDB, che è qualcosa come MongoDB, ho pagato $ 50 in un pomeriggio. È conveniente, ma quasi mai economico.
Tom O'Connor

Immagino che EBS non riesca più a capire il motivo per cui vedo questo costo nella mia fattura, "I / O è incluso nel prezzo dei volumi, quindi paghi solo per ogni GB di spazio di archiviazione fornito". (dalla pagina dei prezzi )?
hayd,

Sospiro, si scopre che è ancora disponibile nella generazione precedente !
hayd,

6

Ho un'istanza RDS che mi sta costando un sacco di soldi.

"Servizi cloud" non significa che le cose ti costeranno centesimi. Fondamentalmente, una richiesta I / O è qualsiasi cosa (cioè un database o una pagina indice) che deve essere recuperata dal disco. Se si dispone di un database di grandi dimensioni e query che utilizzano scansioni di tabelle complete, questo non è affatto sorprendente. Potresti prendere in considerazione la ricerca di query utilizzando colonne non indicizzate per il filtro abilitando l' opzione per registrare le query "non indicizzate" nel log lento di MySQL e aggiungendo indici per le colonne appropriate. Poiché non è possibile modificare direttamente il file di configurazione, utilizzare la configurazione del gruppo di parametri RDS per impostare log-queries-not-using-indexese interrogare la mysql.slow_logtabella per le voci di registro.

Inoltre, considera di eseguire lo script di primer di tuning MySQL dalla tua istanza AWS contro l'istanza del database per un'analisi generale delle prestazioni per vedere se un'istanza più grande potrebbe aiutare le cose a causa di una maggiore quantità di memoria disponibile per la memorizzazione nella cache, alleviando il carico sul disco. Lo script valuta una serie di parametri di configurazione e contatori delle prestazioni per fornire alcune informazioni sui possibili colli di bottiglia e fornire alcuni consigli generici.


5
È sorprendente quanto facilmente noi umani possiamo accidentalmente fare in modo che i computer facciano assurdamente enormi quantità di lavoro. Devi sempre tornare indietro e misurare per assicurarti di non aver inavvertitamente costretto la macchina a fare qualcosa di sorprendentemente stupido. (Una volta ho migliorato le prestazioni di un sistema distribuito del mondo reale del 40% in meno di dieci minuti (senza contare il tempo per impostare una build con profilo) aggiungendone una &al suo codice. Chiaramente, nessuno l'aveva mai profilato.)
David Schwartz,
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.