GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengurangi penggunaan memori ClamAV?

ClamAV menyimpan string pencarian menggunakan string klasik (Boyer Moore) dan algoritme ekspresi reguler (Aho Corasick). Menjadi algoritme dari tahun 1970-an, algoritme ini sangat hemat memori.

Masalahnya adalah banyaknya tanda tangan virus. Hal ini menyebabkan struktur data algoritme tumbuh cukup besar.

Anda tidak dapat mengirim struktur data tersebut untuk ditukar, karena tidak ada bagian dari struktur data algoritme yang lebih jarang diakses daripada bagian lainnya. Jika Anda memaksa halaman mereka untuk menukar disk, maka mereka akan direferensikan beberapa saat kemudian dan langsung ditukar kembali. (Secara teknis kami mengatakan "akses acak dari struktur data memaksa seluruh struktur data untuk berada dalam rangkaian memori proses ".)

Struktur data diperlukan jika Anda memindai dari baris perintah atau memindai dari daemon.

Anda tidak dapat menggunakan hanya sebagian dari tanda tangan virus, karena Anda tidak dapat memilih virus mana yang akan dikirimkan kepada Anda, sehingga tidak dapat menentukan tanda tangan mana yang Anda perlukan.

Berikut adalah memori yang digunakan pada mesin 32-bit yang menjalankan Debian Wheezy dan itu adalah clamd.

# ps_mem.py 
 Private  +   Shared  =  RAM used   Program
281.7 MiB + 422.5 KiB = 282.1 MiB   clamd

Sunting:Saya melihat seseorang menyarankan pengaturan ukuran set penduduk. Jika ini berhasil maka memiliki ukuran set residen kurang dari ukuran set kerja akan menyebabkan proses meronta-ronta ke dan dari swap. Ini akan menurunkan kinerja seluruh sistem secara substansial. Bagaimanapun, halaman manual Linux untuk setrlimit(RLIMIT_RSS, ...) mengatakan bahwa pengaturan ukuran set residen tidak lagi didukung dan tidak pernah berpengaruh pada proses yang memilih untuk tidak memanggil madvise(MADV_WILLNEED, ...).


Jawaban ini tidak diverifikasi dan mungkin tidak berhasil. Itu juga tidak menjawab bagaimana mengurangi penggunaan memori, tetapi bagaimana membatasi penggunaan memori, yang sedikit berbeda.

Anda dapat mengedit skrip init ClamAV (int /etc/init.d/ untuk menambahkan perintah ulimit -m amountofram .
Ini akan membatasi kemungkinan ClamAV dan Anda mungkin akan bertukar yang mungkin akan memperlambat seluruh sistem Anda.


Saya mengalami masalah serupa saat menjalankan clamd pada kotak NAS rumah kecil dengan hanya 512MB. Dari survei pertanyaan di internet, tampaknya tidak ada cara untuk mengurangi penggunaan memori. Basis data hal-hal buruk terus bertambah besar.

Dimungkinkan untuk mengonfigurasi clamav agar berjalan dalam mode non-daemon dengan menginstal "clamav" daripada "clamav-daemon". Ini memungkinkan Anda untuk memiliki lebih banyak memori di sebagian besar waktu. Saat Anda memindai unggahan, itu akan selalu membutuhkan RAM yang besar.


Linux
  1. Bagaimana Pipeline Membatasi Penggunaan Memori?

  2. Bagaimana cara melihat proses teratas yang diurutkan berdasarkan penggunaan memori yang sebenarnya?

  3. Cara mendapatkan penggunaan CPU

  1. Penggunaan Memori Linux

  2. Bagaimana cara mendapatkan% penggunaan memori dengan vmstat?

  3. Bagaimana penggunaan memori dilaporkan di Linux?

  1. Cara Memeriksa Penggunaan Memori Proses dengan Perintah pmap Linux

  2. Cara Memeriksa Penggunaan Memori di Server berbasis Linux

  3. Cara mengetahui penggunaan memori pengguna di linux