ClamAV मेमोरी उपयोग कैसे कम करें?


26

मैं 512MB VPS पर उबंटू आधारित वेब सर्वर (Apache, MySQL) चला रहा हूं। यह उस वेबसाइट (छोटे मंच) के लिए पर्याप्त से अधिक है।

जैसा कि मैं वायरस के खिलाफ कुछ सुरक्षा जोड़ना चाहता था मैंने ClamAV स्थापित किया और अपलोड की गई स्क्रिप्ट (PHP) के हिस्से के रूप में अपलोड की गई फ़ाइलों को स्कैन करने के लिए इसका उपयोग किया।

मैं क्लैम-डेमॉन सेवा चला रहा हूं, इसलिए परिभाषाओं को हर बार फ़ाइल स्कैन करने के बाद लोड नहीं करना पड़ता है। इस अभ्यास का एक नकारात्मक पहलू यह है कि स्मृति की "विशाल" मात्रा का उपयोग क्लैमव-डेमन सेवा द्वारा किया जाता है:> 200 एमबी। यह पहले से ही सेवा को रोकने के लिए मजबूर किया जा रहा है और अपलोड को अस्वीकार कर दिया जा रहा है।

मैं बस VPS की मेमोरी को 1024MB में अपग्रेड कर सकता हूं, लेकिन मैं जानना चाहता हूं कि क्या ClamAV की मेमोरी उपयोग को कम करने का कोई तरीका है जैसे कि अवांछित परिभाषाओं को लोड नहीं करना।

जवाबों:


15

क्लैमाव क्लासिक स्ट्रिंग (बॉयर मूर) और नियमित अभिव्यक्ति (अहो कोरसिक) एल्गोरिदम का उपयोग करके खोज स्ट्रिंग रखता है। 1970 के दशक से एल्गोरिदम होने के नाते वे अत्यधिक स्मृति कुशल हैं।

समस्या वायरस हस्ताक्षर की बड़ी संख्या है। इससे एल्गोरिदम के डेटास्ट्रक्चर काफी बड़े हो रहे हैं।

आप उन डेटास्ट्रक्टर्स को स्वैप करने के लिए नहीं भेज सकते हैं, क्योंकि एल्गोरिदम के डेटास्ट्रक्चर के कुछ हिस्सों को अन्य भागों की तुलना में कम बार एक्सेस नहीं किया जाता है। यदि आप डिस्क को स्वैप करने के लिए उनमें से पृष्ठों को बाध्य करते हैं, तो वे बाद में क्षणों को संदर्भित करेंगे और बस सीधे वापस स्वैप करेंगे (तकनीकी रूप से हम कहते हैं "डेटास्ट्रक्चर की यादृच्छिक पहुंच पूरे डेटास्ट्रेक्चर को मेमोरी के कार्यशील सेट में होने के लिए मजबूर करती है। "।)

यदि आप कमांड लाइन से स्कैन कर रहे हैं या डेमॉन से स्कैन कर रहे हैं, तो डेटास्ट्रक्चर की आवश्यकता है।

आप वायरस हस्ताक्षरों के सिर्फ एक हिस्से का उपयोग नहीं कर सकते, क्योंकि आपको यह चुनने के लिए नहीं मिलता है कि आपको कौन से वायरस भेजे जाएंगे, और इस तरह से यह नहीं बताया जा सकता है कि आपको किन हस्ताक्षरों की आवश्यकता होगी।

यहाँ एक 32-बिट मशीन पर इस्तेमाल की गई मेमोरी है जो डेबियन व्हीज़ी चल रही है और यह क्लैम्ड है।

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

संपादित करें: मैं देखता हूं कि कोई व्यक्ति निवासी सेट आकार निर्धारित करने का सुझाव देता है। यदि यह सफल होता है, तो काम करने वाले सेट के आकार से कम निवासी के आकार का होने से स्वैप करने और बाहर निकलने की प्रक्रिया को बढ़ावा मिलेगा। यह पूरे सिस्टम के प्रदर्शन को काफी कम कर देगा। किसी भी स्थिति में सेटरलिमिट (RLIMIT_RSS, ...) के लिए लिनक्स मैनुअल पेज कहता है कि रेजिडेंट सेट साइज को सेट करना अब समर्थित नहीं है और कभी भी उन प्रक्रियाओं पर कोई प्रभाव नहीं पड़ा है, जिन्होंने मैडवाइज (MADV_WILLEDED ...) को नहीं चुना।


1

मैंने एक ऐसी ही समस्या को एक छोटे से घर NAS बॉक्स पर केवल 512MB के साथ चल रहा है। नेट भर में सवालों के एक सर्वेक्षण से ऐसा लगता है कि स्मृति उपयोग को कम करने का कोई तरीका नहीं है। गंदा चीजों का डेटाबेस बस बड़ा और बड़ा होता रहता है।

"क्लैमव-डेम" के बजाय "क्लैमव" को स्थापित करके गैर-डेमॉन मोड में चलाने के लिए क्लैमव को कॉन्फ़िगर करना संभव है। यह आपको अधिक समय तक अधिक मेमोरी रखने की अनुमति दे सकता है। जब आप अपलोड को स्कैन करते हैं तो इसके लिए हमेशा रैम के एक बड़े हिस्से की जरूरत होती है।


1
इस दृष्टिकोण पर मुख्य नकारात्मक पक्ष यह है कि स्कैन करने में अधिक समय लगेगा। जब भी कोई फ़ाइल अपलोड की जाती है, स्कैन करने से पहले डेटाबेस को लोड करना पड़ता है। यदि आप उपयोगकर्ता के लिए त्वरित प्रतिक्रिया चाहते हैं तो db को लोड करने में बहुत अधिक मूल्यवान मिनट लगते हैं। इसके अलावा, जब एक ही समय में कई अपलोड संसाधित होते हैं, तो आपके पास डेटाबेस को लोड करने वाले कई थ्रेड होंगे, जिसके परिणामस्वरूप अधिक से अधिक रैम का उपयोग भी किया जाएगा। इसलिए डेमॉन का उपयोग। मेरा समाधान मेरी वीपीएस सेवा को अपग्रेड करना और अतिरिक्त रैम के लिए 5 अमरीकी डालर / माह का भुगतान करना था। मैं इस लागत वृद्धि के साथ रह सकता हूं :)
नील्स आर।

1

यह उत्तर सत्यापित नहीं है और यह काम नहीं कर सकता है। यह भी जवाब नहीं देता है कि स्मृति उपयोग को कैसे कम किया जाए, लेकिन स्मृति उपयोग को कैसे सीमित किया जाए, जो थोड़ा अलग है।


आप ClamAV init स्क्रिप्ट को संपादित कर सकते हैं ( /etc/init.d/कमांड जोड़ने के लिए int ulimit -m amountofram
यह ClamAV की संभावना को सीमित करेगा और आप संभवतः स्वैप करेंगे जो संभवतः आपके पूरे सिस्टम को धीमा कर देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.