Saya mencoba mendiagnosis beberapa segfault acak pada server tanpa kepala dan satu hal yang tampaknya aneh adalah bahwa sepertinya hanya terjadi di bawah tekanan memori dan ukuran swap saya tidak akan di atas 0.
Bagaimana saya bisa memaksa mesin saya untuk bertukar untuk memastikan bahwa itu berfungsi dengan baik?
orca ~ # free
total used free shared buffers cached
Mem: 1551140 1472392 78748 0 333920 1046368
-/+ buffers/cache: 92104 1459036
Swap: 1060280 0 1060280
orca ~ # swapon -s
Filename Type Size Used Priority
/dev/sdb2 partition 1060280 0 -1
kern.log
pada saat segfaults? Pesan tentangoom-killer
akan menunjukkan bahwa sistem Anda tidak memiliki cukup memori virtual, yang bisa berarti swap tidak digunakan. Apakah ini server yang tervirtualisasi (dan jenis apa)?segfault at 54 ip b7619ba8 sp bf9c3380 error 4
saya pikir itu masalah perangkat keras yang akan sulit untuk dilacak. Ini adalah server fisik dengan prosesor Athlon MP 2000+ ganda dan RAM 1,5GB. Ini berjalan cukup stabil tetapi segfault selama kompilasi.Jawaban:
Apakah ini linux? Jika demikian, Anda dapat mencoba yang berikut:
Dan kemudian menggunakan program yang menggunakan banyak RAM atau menulis aplikasi kecil yang hanya memakan ram. Berikut ini akan melakukan itu (sumber: http://www.linuxatemyram.com/play.html ):
Saya menambahkan tidur (1) untuk memberi Anda lebih banyak waktu untuk menonton proses karena melahap ram dan swap. Pembunuh OOM harus membunuh ini setelah Anda kehabisan RAM dan SWAP untuk diberikan kepada program. Anda dapat mengompilasinya dengan
di mana filename.c adalah file tempat Anda menyimpan program di atas. Kemudian Anda dapat menjalankannya dengan ./memeater.
Saya tidak akan melakukan ini pada mesin produksi.
sumber
/proc/self/oom_score_adj
memastikan bahwa itu adalah korban OOM-killer yang paling mungkin ...<unistd.h>
untuk tidur, jika tidak itu akan memberikan peringatanwarning: implicit declaration of function ‘sleep’;