Beberapa hari yang lalu saya melihat disk I / O menunggu dan aktivitas drop (yang hebat). Kemudian saya juga melihat bahwa cache saya penuh (*) dan terfragmentasi. Lalu saya membersihkan cache. Setelah itu, latensi disk dan aktivitas disk melonjak ke level sebelumnya (yang buruk).
IOtop menunjukkan bahwa [jbd2 / sda2-8] dan [flush-8:00] selalu di atas penggunaan disk. Ini adalah Dell R210, perangkat keras RAID 1 (H200) dengan banyak memori bebas (total 16 GB, yang sekitar 8 GB adalah buffer / cache).
(*) Cache adalah cache opcode APC untuk PHP, yang mengurangi akses disk untuk eksekusi skrip PHP. Cache penuh dan terfragmentasi karena menyertakan file dari instance pengembangan. Ketika saya perhatikan itu, saya memfilternya.
Pertanyaannya adalah: mengapa disk I / O meningkat ketika secara teori seharusnya menurun? Di bawah ini adalah beberapa grafik dari munin. Cache penuh mulai 6 hingga 8 Februari.
Ubah setelah saya berkomentar apc.mmap_file_mask seperti yang diceritakan oleh @ cyberx86
Dan setelah beberapa hari https://serverfault.com/a/362152/88934
sumber
apc.mmap_file_mask=/tmp/apc.XXXXXX
) Anda mungkin melihat I / O yang lebih tinggi. Coba pengaturanapc.mmap_file_mask
untuk menggunakan memori bersama (mis./apc.shm.XXXXXX
) Atau ke/dev/zero
(memori mmapped anonim).Jawaban:
Jika Anda menggunakan pemetaan memori yang didukung file (mis.
apc.mmap_file_mask=/tmp/apc.XXXXXX
) Anda mungkin melihat I / O yang lebih tinggi.Coba pengaturan
apc.mmap_file_mask
untuk menggunakan memori bersama (mis./apc.shm.XXXXXX
) Atau ke/dev/zero
(memori mmapped anonim). Menjaga pengaturan tidak terdefinisi default untuk menggunakan memori mmapped anonim.Biasanya, file yang mmapped adalah hal yang hebat:
Namun, dibandingkan dengan menyimpan sesuatu yang murni di memori, mereka dikenakan tambahan I / O - jadi ketika file terus berubah. Kelemahan dari tidak menggunakan file mmapped adalah kurangnya persistensi - cache Anda tidak akan selamat dari restart, karena disimpan hanya dalam memori.
Orang mungkin menyarankan karena itu, bahwa sementara cache sedang mengisi dan menstabilkan, itu mengalami perubahan paling besar, yang harus terus-menerus ditulis ke disk; begitu cache penuh, ttl untuk setiap objek memperlambat laju data di cache dibalik, mengurangi perubahan dan mengurangi penulisan disk.
sumber
Setelah beberapa hari, sekarang saya ingin kembali dengan beberapa grafik. Perubahan meningkatkan banyak situasi itu. Ini mengurangi segalanya, kecuali waktu layanan IO (saya pikir itu karena tidak ada lagi file PHP kecil sepele yang murah).
Server memuat (sudah cukup rendah, jadi saya belum menemukan perubahannya).
sumber
apc.mmap_file_mask=/tmp/apc.XXXXXX