Beban tinggi karena I / O menunggu di Ubuntu 12,04 pada EC2 misalnya

9

Saya menggunakan server Ubuntu 12,04, mengalami kesulitan menemukan penyebab beban, saya telah melihat perubahan waktu respons server dari minggu lalu

setelah membaca Pemecahan Masalah Linux, Bagian I: Beban Tinggi

Sepertinya tidak ada masalah dengan CPU dan RAM, dan beban ini mungkin terkait dengan beban I / O-terikat dengan menggunakan topperintah saya mendapat output berikut

Memuat dan penggunaan memori

Ini dia 97.6%wa, RAM gratis dan tidak ada swap yang digunakan.

Berikut ini adalah output dari perintah iostatyang menabur yang ada89% iowait

ubuntu@ip-my-sys-ubuntu:~$ iostat
Linux 3.2.0-58-virtual (ip-172-31-6-203)    02/19/2015  _x86_64_    (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.05    0.01    3.64   89.50    3.76    0.03

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
xvdap1           69.91         3.81       964.37     978925  247942876

Saya juga menggunakan iotopyang setelah interval perbaikan menunjukkan 99% I / O, Disk menulis sebagai pengamat1266 KB/s

masukkan deskripsi gambar di sini

dan

masukkan deskripsi gambar di sini

Apakah ini buruk? karena waktu respons diturunkan. apa yang menyebabkan ini?

EDIT yang diminta oleh orang lain

iftop O / P

                  12.5kb             25.0kb            37.5kb             50.0kb       62.5kb
└─────────────────┴──────────────────┴─────────────────┴──────────────────┴──────────────────
ip-12-1-1-111.ap-southeast-1.  => 115.231.218.130                      0b   2.04kb   522b
                                 <=                                      0b   1.53kb   393b
ip-112-1-1-111.ap-southeast-1.  => 62.snat-111-91-22.hns.net.in      1.52kb  1.52kb  1.72kb
                                 <=                                    208b    208b    262b
ip-112-1-1-111.ap-southeast-1.  => static-mum-120.63.141.177.mtnl.      0b    480b    240b
                                 <=                                      0b    350b    175b
ip-112-1-1-111.ap-southeast-1.  => ip-112-11-1-1.ap-southeast-1.co      0b    118b    178b
                                 <=                                      0b    210b    292b
ip-112-1-1-111.ap-southeast-1.  => static-mum-120.63.194.119.mtnl.      0b      0b    240b
                                 <=                                      0b      0b    175b

TX:             cum:    123kB   peak:   3.72kb               rates:   1.67kb  2.02kb  1.78kb
RX:                    51.5kB           4.88kb                        1.19kb   989b    918b
TOTAL:                  174kB           8.60kb                        2.86kb  2.98kb  2.68kb

output dari iostat -x -k 5 2

ubuntu@ip-111-11-1-111:~$ iostat -x -k 5 2
Linux 3.2.0-58-virtual (ip-111-11-1-111)        03/04/2015      _x86_64_        (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.75    0.01    4.74   22.72    4.06   64.71

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
xvdap1            0.00   263.80    0.42  109.42     7.28  1572.36    28.76     1.92   17.52   17.57   17.52   2.31  25.39

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           8.97    0.00    4.77   76.34    9.92    0.00

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
xvdap1            0.00    35.69    0.00   85.88     0.00   438.93    10.22   137.55 1612.71    0.00 1612.71  11.11  95.42

@shodanshok poin 2

masukkan deskripsi gambar di sini

iotop -a

masukkan deskripsi gambar di sini

Topi jerami
sumber
1
99% IOunggu dengan 0 disk baca dan tulis tidak terlihat bagus. Di sini serverfault.com/questions/426181/… disebutkan, bahwa I / O dapat dikaitkan tidak hanya dengan aktivitas disk, baut juga ke jaringan. Bisakah Anda memeriksanya dengan, misalnya, iftop (dan alat-alat lain juga)?
Andrey Sapegin
@AndreySapegin menambahkan iftop
Straw Hat
Saya pikir masalahnya adalah dengan Disc yang AWS Instance digunakan .. Saya membuat AMI dari instance saat ini dan meluncurkan Instance baru menggunakan itu .. Sekarang tidak ada beban tambahan pada I / O
Straw Hat
@StrawHat apakah itu berarti Anda berpikir ada sesuatu yang salah dengan disk pada instance pertama Anda?
sbrattla
@sbrattla Tidak, saya pikir. setelah beberapa hari masalah yang sama muncul
Straw Hat

Jawaban:

2

Setel layanan mysql Anda untuk menghindari sentuhan ke disk dan hati-hati dalam antrian postfix Anda, Anda mungkin memiliki banyak email ke antrian sensitif I / O (yaitu ditangguhkan, itens kecil dengan perilaku baca acak).

Sistem email Anda telah digunakan sebagai relay untuk spammer.

Lihatlah dokumentasi postfix dan batasi akses relay ke MTA Anda.

fgbreel
sumber
memindahkan mysql ke instance RDS akan bekerja?
Straw Hat
1
Agak, masalah utama adalah karena tingginya jumlah itens ke antrian postfix memakan iops Anda, Anda dapat melihat dengan qshape deferredperintah.
fgbreel
postconf: warning: /etc/postfix/main.cf: unused parameter: virtual_mailbox_limit_maps=proxy:mysql:/etc/zpanel/configs/postfix/mysql-virtual_mailbox_limit_maps.cf
Straw Hat
postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1mendapat kesalahan iniqshape deferred
Straw Hat
1
Saya pikir postfix Anda dapat salah konfigurasi, tetapi untuk masalah Anda saat ini, lihat berapa banyak email yang Anda miliki /var/lib/postfix/deferred. Pindahkan mereka ke holdantrian untuk penyelidikan atau pembersihan lebih lanjut.
fgbreel
1

Diedit setelah informasi tambahan dikumpulkan menggunakan iostat dan iotop
Disk Anda 100% dimuat karena kehabisan IOPS yang tersedia: sesuai iostat, Anda memiliki 50+ IOPS konstan (85 w / s - 35 digabung w / s). Mesin EC2, terutama yang murah, memiliki tutup yang kuat pada IOPS berkelanjutan (dalam kisaran 30-50 IOPS).

Sesuai keluaran iotop baru, baik mysql dan bounce memakan sejumlah besar IOPS. Namun, output iotop tampaknya tidak lengkap, atau paling tidak diurutkan. Bisakah Anda menjalankan kembali "iotop -a" menyortir satu kali dengan IOPS dan lain kali dengan disk menulis?

Jawaban asli
Taruhan saya: proses "bouncing" mengeluarkan banyak tulisan yang disinkronkan yang mencekik perangkat disk virtual yang ditawarkan oleh Amazon (omong-omong, profil apa yang Anda gunakan? Disk EC2 memiliki aturan yang cukup ketat untuk berkelanjutan vs burst I / O).

Bagaimanapun, mengidentifikasi apa yang membakar I / O bandwidth bisa agak sulit di kali. Walaupun iotop adalah alat yang sangat bagus, kadang tidak memberikan informasi yang diperlukan. Kita harus masuk lebih dalam. Jadi, ikuti saran ini:

  1. Pertama, kita perlu mengidentifikasi tipe I / O yang sedang diproses dan perangkat blok yang terpengaruh.
    Jalankan perintah berikut: iostat -x -k 5 2. Silakan laporkan kedua set hasil.
  2. Kemudian, kita perlu mengidentifikasi proses-proses menunggu I / O .
    Ketika dapat menggunakan "atas" untuk itu: luncurkan, tekan shift + f (F), lalu w, lalu masukkan, lalu geser + r (R). Proses pertama akan menjadi yang dalam keadaan D atau D + (yaitu: menunggu disk / jaringan). Silakan laporkan kembali daftarnya.
  3. Gunakan iotop untuk menunjukkan akumulasi nilai I / O untuk proses .
    Jalankan iotop -asekitar satu menit dan tempel di sini output.
shodanshok
sumber
iostat -x -k 5 2 dan juga ditambahkan dalam pertanyaan
Straw Hat
1

Sedikit terlambat, tetapi saya memiliki masalah yang sama pada mesin yang sama dan menemukan bahwa masalahnya adalah sekelompok tabel MySQL yang rusak. Karena beberapa tabel ini memiliki banyak data, itu menghasilkan banyak waktu tunggu I / O.

Lihat /var/log/mysql/error.logatau gunakan mysqlcheckuntuk menemukan dan memperbaiki data yang rusak.

ojovirtual
sumber
0

Seperti yang dinyatakan di atas, sangat mungkin bahwa instance EC2 Anda dilengkapi dengan tutup IO atau mungkin didukung pada volume Amazon EBS Standard yang tidak memberikan banyak IO bijaksana. Lihat halaman ini - ini menggambarkan berbagai jenis volume yang ditawarkan Amazon.

Bahkan jika Anda memang memiliki jenis volume yang lambat, Anda masih harus dapat menulis cukup cepat untuk itu, tetapi jika beban Anda secara acak bersifat alami, seperti yang terlihat (SQL stuff), Anda mungkin ingin meningkatkan IOPS kapasitas, karena itu biasanya menempatkan batas atas pada kinerja SQL.

Jadi - dari nomor Anda, tampaknya Anda mungkin kehabisan IOPS menggunakan penyimpanan standar. Membeli penyimpanan lebih cepat tidaklah mahal. Lihatlah ini .

MrMajestyk
sumber
-3

Disk mungkin dalam mode non-DMA. Silakan periksa status DMA drive. (perintah hdparm)

Jika bukan itu, sesuatu yang lain dapat menghasilkan banyak interupsi. Adakah yang ingat orang-orang dari zaman DOS lama yang baik?

Overmind
sumber
EC2 adalah platform virtualisasi dan menggunakan disk virtual. DMA di bukan pelakunya di sini. Bagaimanapun, badai IRQ menimbulkan kerusakan pada CPU, bukan pada disk.
shodanshok
Ya dan IRQ berarti interupsi.
Overmind
EC2 sejauh mungkin dihapus dari masalah semacam itu mungkin akan saya katakan. I / O dibatasi oleh tipe instance - dan pada akhirnya oleh beberapa solusi SAN yang sangat mahal yang memiliki banyak kapasitas.
MrMajestyk