Solusi 1:
Kehabisan memori.
18 Des 23:24:59 ip-10-0-3-36 kernel:[ 775.566936] Memori habis :Bunuh skor proses 4973 (java) 0 atau korbankan anak
Dari log yang sama (ps);
[ 775.561798] [ 4973] 500 4973 4295425981 2435 71 50 0 java
4295425.981 sekitar 4TB. dan garis total-vm:17181703924kB menunjukkan sekitar 17 TB.
Bisakah Anda men-debug rutinitas alokasi memori Anda? bagi saya aplikasi Anda mendapat loop buruk di suatu tempat dan harus mengambil semua sumber daya yang tersedia, dan swap juga tersedia.
Solusi 2:
Dec 18 23:24:59 ip-10-0-3-36 kernel: [ 775.214705] shmem_fallocate+0x32d/0x440
Dec 18 23:24:59 ip-10-0-3-36 kernel: [ 775.217182] vfs_fallocate+0x13f/0x260
Dec 18 23:24:59 ip-10-0-3-36 kernel: [ 775.219525] SyS_fallocate+0x43/0x80
Dec 18 23:24:59 ip-10-0-3-36 kernel: [ 775.221657] do_syscall_64+0x67/0x100
Proses aplikasi Anda sedang mencoba memanggil fallocate
pada sistem file shmem. Dari googling cepat sepertinya ZGC menggunakan fallocate untuk mengambil memori heap awal dari sistem file shm dan mulai menggunakan fallocate untuk memperluas heap. Penggunaan syscall fallocate semacam itu agak tidak biasa, jadi ini adalah bug ZGC (seperti yang sudah Anda duga) atau ada hal lain yang membocorkan banyak memori, yang menyebabkan ekspansi heap gagal.
Saya sarankan, Anda mengonfigurasi ZGC untuk menghindari alokasi runtime tambahan (setel Xms
dan Xmx
dengan nilai yang sama). Ini mungkin tidak menyelesaikan masalah Anda, jika kebocoran memori terjadi karena sesuatu yang tidak terkait, tetapi setidaknya Anda akan memiliki kesempatan yang lebih baik untuk menemukan pelaku sebenarnya.
Perhatikan, bahwa penyiapan Anda secara keseluruhan agak berbahaya — ZGC tampaknya suka memiliki banyak memori yang berdekatan, tetapi jika Anda memiliki tumpukan 190G pada mesin RAM 240G, mungkin tidak ada wilayah bersebelahan yang cukup besar untuk fallocate
dari. Dalam hal ini ZGC akan kembali mengambil wilayah memori kecil dengan fallocate
lebih lanjut panggilan (lihat deskripsi laporan bug tertaut), dan masalahnya akan dikaburkan lagi... Aktifkan dukungan hugepages di JVM ( hugepage normal , bukan halaman besar transparan !) dan pra-alokasi hugepage selama boot (dengan argumen kernel) — tetap disarankan menggunakan hugepage untuk ukuran heap Anda.