Saya tahu apa fungsinya ... Saya rasa saya ingin tahu mengapa ini memperbaiki masalah dalam aplikasi yang saya warisi. Saya mengambil alih aplikasi kucing jantan yang cukup besar yang bertindak sebagai server Red5 untuk sekelompok klien fleksibel, dan menangani banyak data interaksi real-time, yang akhirnya dibuang ke api rel. Masalahnya adalah di bawah banyak beban dari waktu ke waktu istirahat untuk klien ini tumbuh menjadi 3-400 ms di mana biasanya <100 ms. Klien menduga itu adalah masalah memori yang kami benar-benar tidak pernah bisa mengonfirmasi. Suatu hari server pementasan saya menjalankan tes beban pada bascially berhenti menerima permintaan atau sangat lambat. Atas kemauan saya mengirim
sync && echo 3 > /proc/sys/vm/drop_caches
dan secara ajaib server kembali hidup dan mulai berjalan dengan kecepatan penuh melayani koneksi ini. Apakah ini kebetulan atau apakah perilaku ini masuk akal dan mengapa?
sync
atau baru sajaecho
. Kemudian cobalah mencari tahu mengapa server lambat dalam kasus perbaikan ini (apakah CPU maks? Apakah IO maks? Apakah paging sistem?)Jawaban:
Setiap hard disk adalah perintah yang besarnya lebih lambat dari RAM Anda, jadi linux menggunakan RAM cadangan apa pun yang mungkin Anda miliki untuk menyimpan data sistem file cache. Namun, ini seharusnya tidak pernah menyebabkan masalah kinerja kecuali ada sesuatu yang salah dengan hard disk Anda, atau layanan di server Anda sedang mencoba untuk menulis data pada tingkat tinggi untuk waktu yang lama sehingga server tidak mungkin membuat cache atau mengambil data. Ini juga bisa menjadi tanda bahwa hard disk Anda mencapai akhir masa pakainya.
Bagaimanapun:
man sync
akan memberi tahu Anda apa yang disinkronkan [membersihkan buffer FS]command1 && command2
rusak menjadi 'jika command1 selesai dengan sukses maka jalankan command2'command1 || command2
alias 'jika command1 gagal maka jalankan command2'Perintah yang Anda berikan adalah perbaikan sementara yang terbaik dan merupakan gejala dari sesuatu yang salah dengan sistem Anda. Baik disk Anda sudah habis, atau sistem Anda terlalu lemah untuk apa yang Anda lakukan dengannya, atau keduanya .
sumber
AWS bukan untuk yang pingsan, dan Anda hanya menemui salah satu alasan mengapa. Situasi I / O disk yang buruk pada AWS sudah terkenal, dan salah satu faktor utama yang perlu dipertimbangkan bagi siapa pun yang membangun aplikasi di atasnya. Ada beberapa instance yang dioptimalkan disk dan beberapa trik lainnya (seperti membuat RAID 0 dari volume EBS) yang dapat Anda coba untuk memperbaiki masalah. Pastikan untuk menggunakan instance yang lebih besar (setidaknya m1.large) untuk memastikan bahwa kernel dapat buffer I / O disk.
sumber