Bagaimana saya bisa menentukan berapa banyak TIO yang saya perlukan untuk database AWS RDS saya?

14

Saya memigrasi bagian dari database mysql ke AWS. Data yang dimaksud adalah 99% tulis, dan setiap baris memiliki sekitar 1rb bidang varchar, datetime, dan 4 int.

Saya memperkirakan bahwa kita akan membutuhkan antara 20-25 ribu catatan dimasukkan / jam selama masa puncak.

Saya menjalankan iostat-h pada database saat ini, dan dilaporkan sekitar 40 tps.

Bagaimana cara mengetahui tipe IOPS apa yang akan saya butuhkan?

chris
sumber

Jawaban:

11

Anda harus mengujinya.

Anda dapat melakukan beberapa bagian belakang perhitungan amplop untuk memperkirakan jumlah I / O per sisipan, kalikan dengan jumlah transaksi per detik, tambahkan beberapa ruang penyangga dll, tetapi jauh lebih mudah untuk mengujinya saja.

Hal termudah untuk dilakukan adalah mengalokasikan tebakan terbaik, lalu kembali dan menambah atau menguranginya agar sesuai dengan pengujian yang Anda lakukan di dunia nyata. Ini adalah salah satu kemewahan menggunakan lingkungan berbasis cloud, perubahan perangkat keras berbiaya rendah dan perubahan tersebut biasanya hanya memerlukan pembaruan konfigurasi. Dengan volume EBS Anda tidak bisa hanya meningkatkan jumlah IOPS, Anda juga harus meningkatkan ukuran volume 1 . Anda selalu dapat membuat volume baru dan menyalin data Anda. Akan ada beberapa downtime tetapi jika data Anda tidak besar itu tidak akan sebanyak itu akan menjadi salinan mentah.

Berikut ini perkiraan jumlah I / O yang diperlukan. Sekali lagi itu hanya dugaan karena spesifik tergantung pada jumlah indeks dan apakah arus lalu lintas Anda akan lancar atau spikey. Pada 25K tx / jam, Anda punya ~ 7 tx / detik. Ukuran setiap baris tidak terlalu relevan karena kurang dari ukuran satu I / O (4K). Setiap transaksi akan dilakukan di suatu tempat antara 1-5 IOP (insert utama ditambah sisipan pohon indeks pasangan) jadi katakanlah ~ 35 / s.

Saya katakan mulai dengan minimal 100 IOPS dan tingkatkan jika perlu.

sehrope
sumber
1
BTW, sebagai tindak lanjut dari ini: kami menyiapkan database 300GB, dan itu berarti minimal 1000 IOPS. Setelah sekitar 6 bulan hidup di RDS kami telah 0 insiden karena masalah I / O. Mungkin berlebihan, tapi sedekat mungkin dengan api & lupakan.
chris
Berdasarkan pada beban Anda - Anda tidak perlu IOP yang disediakan. Kecuali Anda akan membutuhkan lebih dari 2500-3500 total TIO, penyimpanan standar akan mencapai 300GB (karena striping EBS).
Ross
7

Saya menggunakan alat dasar iostat (iostat-h) untuk mendapatkan gambaran tentang berapa banyak iops yang saya gunakan saat ini. Dari itu saya memperkirakan berapa banyak yang akan saya gunakan jika saya di bawah 4 kali jumlah beban dan pergi dengan jumlah itu. Bagi saya yang berhasil ke 780 IOPS jadi saya pergi dengan 800 IOPS.

Markus D
sumber
iostat -h melaporkan sekitar 40 tps, jadi apakah itu sesuai dengan 40 iops? Itu akan cocok dengan angka yang dihitung oleh @sehrope.
chris
1
Itu benar.
Mark D
0

Saya menggunakan iostat untuk menentukan jumlah IOPS yang dijalankan oleh aplikasi saya. iostat melaporkan ini sebagai tps. KB / t membantu Anda menentukan apakah jumlah transfer kurang dari ukuran chunk, 256 KiB. Saya menjalankan iostat dengan waktu tunggu satu detik, yaitu iostat -w 1.

Prof Mo
sumber