Jak mogę ustalić, ile procesorów IOP potrzebuję do mojej bazy danych AWS RDS?

14

Migruję część bazy danych mysql do AWS. Dane, o których mowa, to 99% zapisu, a każdy wiersz zawiera około 1 000 pól varchar, datę i godzinę i 4 wartości int.

Szacuję, że w godzinach szczytu będziemy potrzebować od 20 do 25 000 zapisów na godzinę.

Uruchomiłem iostat -h na bieżącej bazie danych, która zgłosiła około 40 tps.

Jak dowiedzieć się, jakiego rodzaju IOPS będę potrzebować?

Chris
źródło

Odpowiedzi:

11

Musisz to przetestować.

Możesz wykonać obliczenia koperty z powrotem, aby oszacować liczbę operacji we / wy na wkładkę, pomnożyć ją przez liczbę transakcji na sekundę, dodać w buforze itp., Ale o wiele łatwiej jest po prostu ją przetestować.

Najłatwiej jest przydzielić najlepszą odpowiedź, a następnie wrócić i zwiększyć lub zmniejszyć, aby dopasować ją do rzeczywistych testów. Jest to jeden z luksusów używania środowiska opartego na chmurze, zmiany sprzętowe mają niskie koszty inwestycyjne i takie zmiany zwykle wymagają jedynie aktualizacji konfiguracji. W przypadku woluminów EBS nie można po prostu zwiększyć liczby IOPS, trzeba też zwiększyć rozmiar wolumenu 1 . Zawsze możesz po prostu utworzyć nowy wolumin i skopiować dane. Nastąpi pewien czas przestoju, ale jeśli twoje dane nie są ogromne, nie powinno być dużo, ponieważ byłoby surową kopią.

Oto przypuszczenie liczby niezbędnych operacji we / wy. Znów jest to tylko przypuszczenie, ponieważ szczegóły zależą od liczby indeksów i tego, czy ruch będzie płynny, czy gwałtowny. Przy 25 tys. Tx / godz. Masz ~ 7 tx / sek. Rozmiar każdego wiersza nie jest szczególnie istotny, ponieważ jest mniejszy niż rozmiar pojedynczego we / wy (4K). Każda transakcja wykona gdzieś pomiędzy 1-5 IOP (podstawowa wstawka plus kilka wstawek drzewa indeksowego), więc powiedzmy ~ 35 / s.

Mówię, że zacznij od minimum 100 IOPS i w razie potrzeby zwiększ skalę.

sehrope
źródło
1
BTW, w następstwie tego: utworzyliśmy bazę danych o pojemności 300 GB, co oznaczało co najmniej 1000 IOPS. Po około 6 miesiącach na RDS mieliśmy 0 incydentów z powodu problemów z I / O. Prawdopodobnie przesada, ale tak blisko ognia i zapomnij, jak możesz.
Chris
W zależności od obciążenia - nie potrzebujesz zabezpieczonych procesorów IOP. O ile nie będziesz potrzebował ponad 2500-3500 wszystkich procesorów IOP, standardowa pamięć zajmie 300 GB (z powodu rozbierania EBS).
Ross
7

Użyłem podstawowego narzędzia iostat (iostat -h), aby dowiedzieć się, ile iopsów aktualnie używałem. Z tego ekstrapolowałem, ile użyłbym, gdybym był mniej niż 4 razy większy niż ładunek i poszedłem z tą ilością. Dla mnie to zadziałało do 780 IOPS, więc wybrałem 800 IOPS.

Mark D.
źródło
iostat -h zgłasza około 40 tps, więc czy odpowiada to 40 IPS? To by pasowało do liczb wyliczonych przez @sehrope.
Chris
1
To jest poprawne.
Mark D
0

Używam iostatu do określania ilości IOPS, które wykonuje moja aplikacja. iostat zgłasza to jako tps. KB / t pomaga ustalić, czy wielkość transferu jest mniejsza niż wielkość porcji - 256 KiB. Uruchomiam iostat z jednosekundowym czasem oczekiwania, tj. Iostat -w 1.

Prof Mo
źródło