Saya punya contoh RDS yang menghabiskan banyak uang. Dari aktivitas akun saya di amazon saya melihat bahwa instance telah memiliki sekitar 800.000.000 permintaan IO selama 7 hari terakhir.
Untuk memberi Anda sedikit perspektif, aplikasi saya hanya mendapat sekitar 6.000 kunjungan unik sehari dan itu tidak membuat banyak koneksi basis data.
Jadi, apa sebenarnya Permintaan IO, dan mengapa angka itu begitu tinggi? Saya bersedia melakukan apa pun untuk aplikasi saya untuk mengurangi biaya itu jika perlu, tetapi saya tidak yakin apa yang sebenarnya terjadi.
Saya akan menghargai pikiran Anda.
mysql
io
amazon-rds
Abe
sumber
sumber
Jawaban:
Ah, Layanan Web Amazon. Salah satu moneysink terbesar yang tersedia. Sangat bagus, tetapi tidak selalu murah. Sebenarnya, hampir tidak pernah murah, dan selalu sulit untuk memperkirakan pengeluaran.
Permintaan IO adalah operasi disk. Baik itu membaca, atau menulis, Anda pada dasarnya ditagih dengan berapa banyak data yang Anda dapatkan dari sistem mereka. Ini gila.
Anda dapat memperkirakan Permintaan IO yang Anda buat, dengan melihat iostat.
800.000.000 IOrequests dalam 7 hari .. Itu ~ = 1300 IOPS. Wow. Itu beberapa kinerja jahat.
Jika Anda benar-benar ingin mengurangi biaya ini, mungkin ini saatnya untuk melihat apakah RDS paling cocok untuk aplikasi dan anggaran proyek Anda.
Jika Anda hanya mendapat hit 6k sehari, Anda mungkin lebih baik dalam hal biaya dan kinerja dengan dedicated server (lebih disukai 2 em, satu untuk DB, satu untuk layanan web). Sebenarnya sedikit lebih sulit untuk melakukan panggilan itu karena Anda tidak mengatakan terlalu banyak tentang aplikasi Anda.
sumber
"Layanan cloud" tidak berarti bahwa barang akan dikenakan biaya uang Anda. Pada dasarnya, permintaan I / O adalah apa saja (yaitu database atau halaman indeks) yang perlu diambil dari disk. Jika Anda memiliki database besar dan permintaan menggunakan scan tabel penuh, ini tidak berarti mengejutkan. Anda dapat mempertimbangkan mencari kueri menggunakan kolom tidak indeks untuk memfilter dengan mengaktifkan opsi untuk mencatat kueri "tidak indeks" ke log lambat MySQL dan menambahkan indeks untuk kolom yang sesuai. Karena Anda tidak memiliki opsi untuk mengedit file konfigurasi secara langsung, gunakan konfigurasi grup parameter RDS untuk mengatur
log-queries-not-using-indexes
dan memintamysql.slow_log
tabel untuk entri log.Juga, pertimbangkan untuk menjalankan skrip primer penyetelan MySQL dari instance AWS Anda terhadap instance database untuk analisis kinerja umum untuk melihat apakah instance yang lebih besar akan membantu masalah karena jumlah memori yang lebih besar yang tersedia untuk caching, mengurangi beban pada disk. Script mengevaluasi sejumlah parameter konfigurasi dan penghitung kinerja untuk memberikan beberapa informasi tentang kemungkinan kemacetan dan memberikan beberapa rekomendasi umum.
sumber
&
ke kodenya. Jelas, tidak ada yang pernah membuat profilnya.)