Solusi 1:
Berikut adalah beberapa alat untuk menemukan aktivitas disk:
iotop
vmstat 1
iostat 1
lsof
strace -e trace=open <application>
strace -e trace=open -p <pid>
Di ps auxf
Anda juga akan melihat proses mana yang berada dalam disk sleep yang tidak dapat diinterpretasikan (D
) karena mereka sedang menunggu I/O.
Beberapa hari ini beban meningkat hingga mencapai 40 tanpa peningkatan jumlah pengunjung.
Anda mungkin juga ingin membuat cadangan, dan melihat apakah harddisk perlahan rusak. Hard drive biasanya mulai melambat sebelum mati. Ini juga bisa menjelaskan beban tinggi.
Solusi 2:
Keluaran dari atas menunjukkan bahwa DBMS mengalami sebagian besar penantian I/O, sehingga masalah penyetelan basis data merupakan kandidat yang jelas untuk diselidiki.
I/O menunggu di server basis data - terutama pada lonjakan beban - adalah petunjuk bahwa DBMS Anda mungkin terikat pada disk (yaitu Anda memerlukan subsistem disk yang lebih cepat) atau mungkin ada masalah penyetelan. Anda mungkin juga harus mempelajari pembuatan profil server basis data Anda - yaitu, mendapatkan jejak tentang apa yang dilakukannya dan kueri apa yang menghabiskan waktu.
Beberapa titik awal untuk mendiagnosis masalah penyetelan basis data:-
-
Temukan kueri yang paling banyak memakan waktu, dan lihat paket kueri. Lihat apakah ada yang memiliki rencana kueri aneh seperti pemindaian tabel di tempat yang tidak seharusnya. Mungkin basis data perlu ditambahkan indeks.
-
Waktu tunggu sumber daya yang lama dapat berarti bahwa beberapa kumpulan sumber daya utama perlu diperluas.
-
Waktu tunggu I/O yang lama mungkin berarti Anda memerlukan subsistem disk yang lebih cepat.
-
Apakah volume log dan data Anda berada di drive terpisah? Log basis data memiliki banyak penulisan berurutan kecil (pada dasarnya mereka berperilaku seperti buffer cincin). Jika Anda memiliki beban kerja akses acak sibuk yang berbagi disk yang sama dengan log Anda, hal ini akan memengaruhi throughput logging secara tidak proporsional. Untuk transaksi database untuk melakukan entri log harus ditulis ke disk, sehingga ini akan menempatkan hambatan pada keseluruhan sistem.
Perhatikan bahwa beberapa mesin penyimpanan MySQL tidak menggunakan log, jadi ini mungkin bukan masalah bagi Anda.
Catatan kaki:Sistem antrian
Sistem antrian (model statistik untuk throughput) menjadi lebih lambat secara hiperbolik saat sistem mendekati saturasi. Untuk perkiraan tingkat tinggi, sistem yang jenuh 50% memiliki panjang antrian rata-rata 2. Sistem yang jenuh 90% memiliki panjang antrian 10, sistem yang jenuh 99% memiliki panjang antrian 100.
Jadi, pada sistem yang mendekati saturasi, perubahan kecil pada beban dapat menghasilkan perubahan besar pada waktu tunggu, dalam hal ini bermanifestasi sebagai waktu yang dihabiskan untuk menunggu I/O. Jika kapasitas I/O subsistem disk Anda hampir jenuh, maka perubahan kecil pada beban dapat mengakibatkan perubahan waktu respons yang signifikan.
Solusi 3:
Jalankan iotop
, atau atop -dD
, untuk melihat proses apa yang sedang dilakukan io. Gunakan strace
jika Anda perlu melihat lebih dekat.