Mengapa ubuntu sepertinya tidak melepaskan memori?

11

Saya bekerja dengan apache2 + php dan aplikasi server web lainnya.

Saya memiliki monitor sebagai sesi yang menghubungkan ke server web. Memori RAM penuh.

Tetapi ketika memutuskan sesi, itu tidak membebaskan memori RAM.

Saya telah memantau melalui free -m, dan itu menunjukkan memori yang belum pernah dirilis bahkan tanpa sesi sekarang terhubung.

Apakah ada solusinya?

Tejaskumar Tank
sumber
Hati-hati dengan -m gratis. Baris pertama menunjukkan penggunaan memori termasuk buffer dan cache. Baris kedua menunjukkan memori yang digunakan lebih sedikit buffer dan cache, yang merupakan memori aktual yang tersedia. Anda juga harus mencoba sesuatu seperti htopuntuk keperluan pemantauan. Ini jauh lebih intuitif dan tersedia di repo resmi. Jika Anda benar-benar kehabisan memori, beri kami lebih banyak info seperti jenis aplikasi web yang Anda jalankan, jumlah RAM yang Anda miliki, apa yang digunakan dan semua. Tempel output dari -m gratis dan hal-hal seperti itu.
Johnride
3
Tidak ada solusi, karena tidak ada masalah. Linux menggunakan RAM yang tersedia sebagai buffer untuk file.
Jalankan CMD
Tapi di sini setelah perintah api: sudo sync && sudo sysctl -w vm.drop_caches = 3 Ini menunjukkan saya benar memori yang tersedia gratis dan juga aplikasi bekerja lebih baik.
Tejaskumar Tank
Saya paling berpengalaman dengan server VPS dan didirikan baru-baru ini debian 9.0 bekerja sempurna dengan manajemen memori.
Tejaskumar Tank

Jawaban:

12

Anda dapat membebaskan memori yang tidak digunakan menggunakan perintah ini:

sudo sync && sudo sysctl -w vm.drop_caches=3

Perintah ini menyinkronkan data yang di-cache dan kemudian menulis parameter OS saat runtime, terletak di / proc / sys / vm / drop_caches . Parameter ini dibaca oleh kernel sekali, lalu kosongkan memori yang tidak digunakan.

Pada dasarnya, kernel menyimpan tiga bagian dalam cache, yang dapat meningkatkan penggunaan memori:

  • pagecache
  • gigi
  • inode

Menulis ke parameter ini akan menyebabkan kernel untuk menjatuhkan bersih pagecache, gigi palsu dan inode dari RAM, menyebabkan memori menjadi bebas. Ada tiga nilai yang dapat ditugaskan:

  1. vm.drop_caches = 1 pagecache gratis.
  2. vm.drop_caches = 2 gigi gratis dan inode.
  3. vm.drop_caches = 3 pagecache, gigi palsu, dan inode gratis.

Penting: Setelah eksekusi, ini akan kembali ke keadaan normal yang berarti memulai caching pagecache, gigi palsu dan inode lagi. Gunakan tergantung pada konfigurasi dan aplikasi server Anda.

Guillermo Garcia
sumber
1
Bisakah Anda jelaskan sedikit lebih detail?
AB
Perintah ini hanya berguna ketika mingguan atau harian pada akhir hari ingin melepaskan semua memori yang tidak digunakan, juga 3 atau 2 atau 1 masing-masing dengan tujuan yang berbeda. Jangan coba ini di server sesi dimuat.
Tejaskumar Tank
1
Edit jawaban Anda, bukan sebagai komentar.
AB
sudo sync & sudo sysctl -w vm.drop_caches=3
Nyxynyx
1
@GuillermoGarcia Menggunakan bash di Ubuntu 18.04.3. Saya perlu memasukkan sudokedua kalinya. Kalau tidak, saya mendapatkan kesalahansysctl: permission denied on key 'vm.drop_caches'
Nyxynyx