Lewati ke konten utama

OOM Killer Resolutions: Processes with High Risk of Memory Leak

Perhatikan secara khusus proses dalam grup ini sebagai penyebab paling mungkin dari masalah out-of-memory Anda (diurutkan berdasarkan peran server):

Load Balancers

Common recommendations

Tambahkan lebih banyak RAM ke node yang sesuai - layanan yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal.

ProcessResolution
varnishdTambahkan lebih banyak RAM ke node - layanan yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal

Application Servers

Klik pada poin-poin di daftar di bawah ini untuk melihat beberapa rekomendasi umum tentang cara menangani masalah kekurangan memori berdasarkan bahasa pemrograman yang digunakan, serta resolusi yang sesuai untuk proses terkait yang paling menuntut:

  • Java

Common recommendations

Tinjau konfigurasi manajemen memori utama untuk mesin Java Anda dan, jika diperlukan, sesuaikan dengan kebutuhan aplikasi Anda, misalnya:

java -Xmx2048m -Xms256m

di mana

  • Xmx menandakan memori heap maksimum yang dapat dialokasikan untuk Java Virtual Machine (JVM)
  • Xms menandakan alokasi memori awal

Lihat dokumentasi resmi untuk info lebih lanjut tentang Java memory management sistem.

tip

Platform juga mengimplementasikan manajemen memori otomatis tambahan untuk kontainer Java menggunakan Garbage Collector. Anda dapat menyesuaikan pengaturannya sesuai dengan spesifikasi aplikasi Anda untuk menghindari masalah OOM dan mendapatkan pemanfaatan memori yang lebih efisien. Juga, pertimbangkan bahwa JVM memerlukan lebih banyak memori daripada hanya heap - baca referensi Java Memory Structure untuk mendapatkan wawasan yang lebih dalam.

ProcessResolution
javaPeriksa parameter xmx , xms , xmn pada mesin Java Anda dan konfigurasikan sesuai dengan kebutuhan aplikasi Anda
  • PHP

Common recommendations

1. Jika masalah terjadi pada layanan httpd (httpd.itk), sesuaikan parameter manajemen memori server sebagai berikut:

  • periksa jumlah rata-rata RAM yang digunakan oleh setiap instance httpd
  • hapus Jelastic autoconfiguration mark di dalam file /etc/httpd/httpd.conf
  • kurangi nilai ServerLimit dan MaxClients sesuai dengan formula: (Total_RAM - 5%) / Average_RAM
peringatan

Jika Anda melihat peningkatan penggunaan memori yang terus-menerus per instance (kebocoran), Anda perlu mengurangi nilai MaxRequestsPerChild (sekitar 1000-5000).

2. Untuk proses nginx, sambungkan ke kontainer Anda melalui SSH dan periksa ukuran instance php-fpm (misalnya dengan alat ps atau top):

  • jika semua instance mengonsumsi ~50-100Mb RAM, nonaktifkan auto configuration dan kurangi parameter max_children
  • jika ukuran instance sangat bervariasi atau melebihi 200-300Mb, proses kemungkinan bocor - periksa dan optimalkan kode Anda atau, sebagai alternatif, nonaktifkan auto configuration dan kurangi parameter max_requests_per_child
ProcessResolution
httpd1. Periksa jumlah rata-rata RAM yang digunakan oleh setiap instance httpd
2. Hapus Jelastic autoconfiguration mark di dalam file /etc/httpd/httpd.conf
3. Kurangi nilai ServerLimit dan MaxClients sesuai dengan formula: (Total_RAM - 5%) / Average_RAM
lsyncdTambahkan lebih banyak RAM ke node - layanan yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
httpd.itk1. Periksa jumlah rata-rata RAM yang digunakan oleh setiap instance httpd
2. Hapus Jelastic autoconfiguration mark di dalam file /etc/httpd/httpd.conf
3. Kurangi nilai ServerLimit dan MaxClients sesuai dengan formula: (Total_RAM - 5%) / Average_RAM
nginxNonaktifkan Jelastic auto configuration dan sesuaikan parameter yang sesuai sesuai dengan spesifikasi aplikasi Anda
phpNonaktifkan Jelastic auto configuration dan sesuaikan parameter yang sesuai sesuai dengan spesifikasi aplikasi Anda
php-fpmNonaktifkan Jelastic auto configuration dan sesuaikan parameter yang sesuai sesuai dengan spesifikasi aplikasi Anda
php-fpm7.0Nonaktifkan Jelastic auto configuration dan sesuaikan parameter yang sesuai sesuai dengan spesifikasi aplikasi Anda
php7.0Nonaktifkan Jelastic auto configuration dan sesuaikan parameter yang sesuai sesuai dengan spesifikasi aplikasi Anda
  • Ruby

Common recommendations

Masalah kebocoran memori cukup umum untuk Ruby, jadi, sebagai langkah pertama, pertimbangkan untuk memeriksa dan mengoptimalkan kode Anda. Sebagai alternatif, coba tambahkan batas RAM untuk sebuah instance.

ProcessResolution
httpd1. Periksa jumlah rata-rata RAM yang digunakan oleh setiap instance httpd
2. Hapus Jelastic autoconfiguration mark di dalam file /etc/httpd/httpd.conf
3. Kurangi nilai ServerLimit dan MaxClients sesuai dengan formula: (Total_RAM - 5%) / Average_RAM
httpd.itk1. Periksa jumlah rata-rata RAM yang digunakan oleh setiap instance httpd
2. Hapus Jelastic autoconfiguration mark di dalam file /etc/httpd/httpd.conf
3. Kurangi nilai ServerLimit dan MaxClients sesuai dengan formula: (Total_RAM - 5%) / Average_RAM
bundleTambahkan lebih banyak RAM ke node - layanan yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
gemTambahkan lebih banyak RAM ke node - layanan yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
rubyPertimbangkan untuk memeriksa dan mengoptimalkan kode Anda atau tambahkan lebih banyak RAM ke node
  • Python

Common recommendations

1. Jika masalah terjadi pada layanan httpd (httpd.itk), sesuaikan parameter manajemen memori server sebagai berikut:

  • periksa jumlah rata-rata RAM yang digunakan oleh setiap instance httpd
  • hapus Jelastic autoconfiguration mark di dalam file /etc/httpd/httpd.conf
  • kurangi nilai ServerLimit dan MaxClients sesuai dengan formula: (Total_RAM - 5%) / Average_RAM
peringatan

Jika Anda melihat peningkatan penggunaan memori yang terus-menerus per instance (kebocoran), kurangi nilai MaxRequestsPerChild (sekitar 1000-5000).

2. Jika tidak, tambahkan lebih banyak RAM ke node - proses Python utama mungkin hanya memerlukan lebih banyak memori untuk operabilitas normal.

ProcessResolution
httpd1. Periksa jumlah rata-rata RAM yang digunakan oleh setiap instance httpd
2. Hapus Jelastic autoconfiguration mark di dalam file /etc/httpd/httpd.conf
3. Kurangi nilai ServerLimit dan MaxClients sesuai dengan formula: (Total_RAM - 5%) / Average_RAM
lsyncdTambahkan lebih banyak RAM ke node - aplikasi yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
httpd.itk1. Periksa jumlah rata-rata RAM yang digunakan oleh setiap instance httpd
2. Hapus Jelastic autoconfiguration mark di dalam file /etc/httpd/httpd.conf
3. Kurangi nilai ServerLimit dan MaxClients sesuai dengan formula: (Total_RAM - 5%) / Average_RAM
pipBisa disebabkan oleh masalah jaringan (sehingga proses pengunduhan terjebak); jika tidak, tambahkan lebih banyak RAM ke node - aplikasi yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
pythonTambahkan lebih banyak RAM ke node - aplikasi yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
python2.7Tambahkan lebih banyak RAM ke node - aplikasi yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
  • NodeJS

Common recommendations

Restart container untuk memulihkan proses yang dihentikan. Jika masalah berulang, tambahkan lebih banyak RAM ke node - aplikasi yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal.

ProcessResolution
lsyncdTambahkan lebih banyak RAM ke node - aplikasi yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
gruntTambahkan lebih banyak RAM ke node - aplikasi yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
nodeTambahkan lebih banyak RAM ke node - aplikasi yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
npmTambahkan lebih banyak RAM ke node - aplikasi yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
phantomjsTambahkan lebih banyak RAM ke node - aplikasi yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal

Database Servers

Klik pada stack DB yang diperlukan dalam daftar di bawah ini untuk menampilkan rekomendasi umum yang sesuai untuk menangani masalah OOM, serta resolusi untuk proses yang dihentikan tertentu:

  • MySQL

Common recommendations

1. Jika menggunakan engine InnoDB (tertanam sejak MySQL versi 5.5), periksa ukuran buffer dengan perintah berikut:

SHOW ENGINE INNODB STATUS\G;

Jika nilai buffer tinggi (lebih dari 80% dari total RAM kontainer), kurangi ukuran pool yang diperbolehkan dengan parameter innodb_buffer_pool_size di file /etc/my.cnf; jika tidak, tambahkan lebih banyak RAM ke server.

2. Selain itu, periksa log MySQL untuk peringatan dan rekomendasi.

ProcessResolution
httpd1. Periksa jumlah rata-rata RAM yang digunakan oleh setiap instance httpd
2. Hapus Jelastic autoconfiguration mark di dalam file /etc/httpd/httpd.conf
3. Kurangi nilai ServerLimit dan MaxClients sesuai dengan formula: (Total_RAM - 5%) / Average_RAM
mysqld1. Jika menggunakan engine InnoDB (secara default untuk MySQL 5.5 dan lebih tinggi), periksa ukuran buffer dengan perintah SHOW ENGINE INNODB STATUS\G;. Jika nilai buffer tinggi (lebih dari 80% dari total RAM kontainer), kurangi ukuran pool yang diperbolehkan dengan parameter innodb_buffer_pool_size di file /etc/my.cnf
2. Periksa log MySQL untuk peringatan dan rekomendasi
  • MongoDB

Common recommendations

Jika masalah terjadi pada layanan httpd, sesuaikan parameter manajemen memori server sebagai berikut:

  • periksa jumlah rata-rata RAM yang digunakan oleh setiap instance httpd
  • hapus Jelastic autoconfiguration mark di dalam file /etc/httpd/httpd.conf
  • kurangi nilai ServerLimit dan MaxClients sesuai dengan formula: (Total_RAM - 5%) / Average_RAM
peringatan

Jika Anda melihat peningkatan penggunaan memori yang terus-menerus per instance (kebocoran), kurangi nilai MaxRequestsPerChild (sekitar 1000-5000).

ProcessResolution
httpd1. Periksa jumlah rata-rata RAM yang digunakan oleh setiap instance httpd
2. Hapus Jelastic autoconfiguration mark di dalam file /etc/httpd/httpd.conf
3. Kurangi nilai ServerLimit dan MaxClients sesuai dengan formula: (Total_RAM - 5%) / Average_RAM
mongodTambahkan lebih banyak RAM ke node - layanan yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
  • PostgreSQL

Common recommendations

Tambahkan lebih banyak RAM ke node yang sesuai - layanan yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal.

ProcessResolution
httpd1. Periksa jumlah rata-rata RAM yang digunakan oleh setiap instance httpd
2. Hapus Jelastic autoconfiguration mark di dalam file /etc/httpd/httpd.conf
3. Kurangi nilai ServerLimit dan MaxClients sesuai dengan formula: (Total_RAM - 5%) / Average_RAM
postgresTambahkan lebih banyak RAM ke node - layanan yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
  • Redis

Common recommendations

Tambahkan lebih banyak RAM ke node yang sesuai - layanan yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal.

ProcessResolution
redis-serverTambahkan lebih banyak RAM ke node - layanan yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal

Common Processes for Different-Type Stacks

Common recommendations

Proses dalam bagian ini dapat dijalankan dan, kemudian, dihentikan dalam berbagai jenis node. Oleh karena itu, resolusi OOM untuk mereka bervariasi dan tergantung pada proses itu sendiri - lihat tabel di bawah ini untuk menemukan rekomendasi yang sesuai.

ProcessStackResolution
httpdPHP
Ruby
Python
MySQL
MongoDB
PostgreSQL1. Periksa jumlah rata-rata RAM yang digunakan oleh setiap instance httpd
2. Hapus Jelastic autoconfiguration mark di dalam file /etc/httpd/httpd.conf
3. Kurangi nilai ServerLimit dan MaxClients sesuai dengan formula: (Total_RAM - 5%) / Average_RAM
lsyncdPHP
NodeJS
PythonTambahkan lebih banyak RAM ke node - layanan yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
httpd.itkPHP
Ruby
Python1. Periksa jumlah rata-rata RAM yang digunakan oleh setiap instance httpd
2. Hapus Jelastic autoconfiguration mark di dalam file /etc/httpd/httpd.conf
3. Kurangi nilai ServerLimit dan MaxClients sesuai dengan formula: (Total_RAM - 5%) / Average_RAM
procmailAnyRestart container untuk memulihkan proses
vsftpdAnyRestart container untuk memulihkan proses
yumAnyRestart container untuk memulihkan proses
cc13rd partyTambahkan lebih banyak RAM ke node - layanan yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
clamd3rd partyTambahkan lebih banyak RAM ke node - layanan yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
ffmpeg3rd partyTambahkan lebih banyak RAM ke node - layanan yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
firefox3rd partyTambahkan lebih banyak RAM ke node - layanan yang ditangani mungkin memerlukan lebih banyak memori untuk operabilitas normal
newrelic-daemon3rd partyRestart layanan stack utama (nginx, tomcat, nodejs, dll.)

Baca Juga