GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann die ClamAV-Speichernutzung reduziert werden?

ClamAV hält die Suchstrings unter Verwendung der klassischen String- (Boyer Moore) und regulären Ausdrucksalgorithmen (Aho Corasick). Als Algorithmen aus den 1970er Jahren sind sie extrem speichereffizient.

Das Problem ist die große Anzahl von Virensignaturen. Dies führt dazu, dass die Datenstrukturen der Algorithmen ziemlich groß werden.

Sie können diese Datenstrukturen nicht zum Austauschen senden, da auf Teile der Datenstrukturen der Algorithmen seltener zugegriffen wird als auf andere Teile. Wenn Sie Seiten davon zwingen, die Festplatte auszutauschen, werden sie einen Moment später referenziert und einfach wieder eingelagert. (Technisch gesehen sagen wir:„Der wahlfreie Zugriff auf die Datenstruktur zwingt die gesamte Datenstruktur dazu, sich im Arbeitsspeicher des Prozesses zu befinden ".)

Die Datenstrukturen werden benötigt, wenn Sie von der Befehlszeile oder von einem Daemon aus scannen.

Sie können nicht nur einen Teil der Virensignaturen verwenden, da Sie nicht auswählen können, welche Viren Ihnen gesendet werden, und daher nicht sagen können, welche Signaturen Sie benötigen.

Hier ist der Speicher, der auf einem 32-Bit-Rechner verwendet wird, auf dem Debian Wheezy läuft, und es ist clamd.

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

Bearbeiten:Ich sehe, dass jemand vorschlägt, die Resident-Set-Größe festzulegen. Wenn dies erfolgreich ist, führt eine Größe des residenten Satzes, die kleiner als die Größe des arbeitenden Satzes ist, dazu, dass der Prozess zum und vom Austauschen zerschmettert wird. Dadurch wird die gesamte Systemleistung erheblich verringert. Auf jeden Fall sagt die Linux-Handbuchseite für setrlimit(RLIMIT_RSS, ...), dass das Festlegen der residenten Satzgröße nicht mehr unterstützt wird und niemals Auswirkungen auf Prozesse hatte, die entschieden haben, madvise (MADV_WILLNEED, ...) nicht aufzurufen.


Diese Antwort ist nicht verifiziert und funktioniert möglicherweise nicht. Es beantwortet auch nicht, wie man die Speichernutzung reduziert, sondern wie man die Speichernutzung begrenzt, was etwas anders ist.

Sie können das ClamAV-Init-Skript (int /etc/init.d/ um den Befehl ulimit -m amountofram hinzuzufügen .
Es wird die Möglichkeit von ClamAV einschränken und Sie werden wahrscheinlich wechseln, was wahrscheinlich Ihr gesamtes System verlangsamen wird.


Ich bin auf ein ähnliches Problem gestoßen, als ich clamd auf einer kleinen Heim-NAS-Box mit nur 512 MB ausgeführt habe. Aus einer Umfrage im Internet geht hervor, dass es keine Möglichkeit gibt, die Speichernutzung zu reduzieren. Die Datenbank mit fiesen Dingen wird immer größer.

Es ist möglich, clamav so zu konfigurieren, dass es im Nicht-Daemon-Modus läuft, indem man "clamav" anstelle von "clamav-daemon" installiert. Dies kann Ihnen ermöglichen, die meiste Zeit über mehr Speicher zu verfügen. Wenn Sie Uploads scannen, wird immer ein großer Teil des Arbeitsspeichers benötigt.


Linux
  1. Linux-Speichernutzung

  2. So überprüfen Sie die Speichernutzung in einem Linux-basierten Server

  3. Wie kann ich die Top-Prozesse nach tatsächlicher Speichernutzung sortiert anzeigen?

  4. Wie kann die Speichernutzung der Anwendung begrenzt werden?

  5. Wie wird die Speichernutzung in Linux gemeldet?

So finden Sie die Top 10 der laufenden Prozesse nach Speicher- und CPU-Auslastung

So finden Sie die am häufigsten ausgeführten Prozesse nach Speichernutzung

Wie wird die Top/htop-Speichernutzung interpretiert?

So sortieren Sie den obersten Befehl basierend auf der Speichernutzung

Wie kann ich die Speichernutzung profilieren?

Speicherauslastung des TOP-Befehls