কীভাবে ক্ল্যামাভি মেমরির ব্যবহার হ্রাস করবেন?


26

আমি 512MB ভিপিএসে একটি উবুন্টু ভিত্তিক ওয়েব সার্ভার (অ্যাপাচি, মাইএসকিউএল) চালাচ্ছি। এটি চলমান ওয়েবসাইটের জন্য এটির চেয়ে যথেষ্ট (ছোট ফোরাম)।

আমি ভাইরাসগুলির বিরুদ্ধে কিছু সুরক্ষা যুক্ত করতে চাইলে আমি ক্ল্যামএভি ইনস্টল করেছি এবং এটি আপলোড হ্যান্ডলিং স্ক্রিপ্টের (পিএইচপি) অংশ হিসাবে আপলোড হওয়া ফাইলগুলি স্ক্যান করতে ব্যবহার করি।

আমি ক্ল্যামাভ-ডেমন পরিষেবা চালাচ্ছি তাই প্রতিবার কোনও ফাইল স্ক্যান করার সময় সংজ্ঞাগুলি লোড করতে হবে না। এই অনুশীলনের একটি খারাপ দিকটি মনে হচ্ছে ক্ল্যামাভ-ডেমন পরিষেবা দ্বারা ব্যবহৃত "বিশাল" পরিমাণ স্মৃতি:> 200 এমবি। এর ফলে ইতিমধ্যে পরিষেবাটি বন্ধ করতে বাধ্য করা হয়েছিল এবং আপলোডগুলি প্রত্যাখ্যান করা হয়েছিল।

আমি কেবলমাত্র ভিপিএসের মেমরিটিকে 1024 এমবিতে আপগ্রেড করতে পারি, তবে আমি জানতে চাই যে ক্ল্যামাভের মেমরির ব্যবহার হ্রাস করার কোনও উপায় আছে কিনা উদাহরণস্বরূপ, অযাচিত সংজ্ঞা লোড না করে।

উত্তর:


15

ক্ল্যামএভিভিতে ক্লাসিক স্ট্রিং (বায়ার মুর) এবং নিয়মিত এক্সপ্রেশন (আহো করাসিক) অ্যালগোরিদম ব্যবহার করে অনুসন্ধানের স্ট্রিং রয়েছে। 1970 এর দশক থেকে অ্যালগরিদম হওয়ায় তারা বাহ্যিক স্মৃতিশক্তি দক্ষ।

সমস্যাটি হ'ল বিপুল সংখ্যক ভাইরাস স্বাক্ষর। এটি আলগোরিদিমগুলির ডেটাস্ট্রাকচারগুলি বেশ বড় আকার ধারণ করে।

আপনি সেই ডেটাস্ট্রাকচারগুলি অদলবদলে পাঠাতে পারবেন না, কারণ অ্যালগরিদমের ডেটাস্ট্রাকচারের কোনও অংশ অন্যান্য অংশের তুলনায় কম অ্যাক্সেস পাওয়া যায়। যদি আপনি তাদের পৃষ্ঠাগুলিকে ডিস্কের অদলবদল করতে বাধ্য করেন তবে কিছুক্ষণ পরে সেগুলি উল্লেখ করা হবে এবং সরাসরি সোজা ফিরে ফিরে আসবেন Techn (প্রযুক্তিগতভাবে আমরা বলেছি "ডাটাস্ট্রিক্টের এলোমেলো অ্যাক্সেস পুরো ডেটাস্ট্রাকচারকে প্রক্রিয়াটির মেমরির কার্যক্ষম সেট হতে বাধ্য করে "।)

আপনি যদি কমান্ড লাইন থেকে স্ক্যান করে বা ডেমন থেকে স্ক্যান করছেন তবে ডেটাস্ট্রাকচারগুলির প্রয়োজন are

আপনি ভাইরাস স্বাক্ষরগুলির কেবলমাত্র একটি অংশ ব্যবহার করতে পারবেন না, কারণ আপনাকে কোন ভাইরাস প্রেরণ করা হবে তা চয়ন করতে না পারলে এবং আপনাকে কোন স্বাক্ষরের প্রয়োজন হবে তা বলতে পারে না।

এখানে দেবিয়ান হুইজি চালিত 32-বিট মেশিনে ব্যবহৃত স্মৃতিটি রয়েছে এবং এটি ক্ল্যামড।

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

সম্পাদনা: আমি দেখছি যে কেউ বাসিন্দার সেট আকার নির্ধারণ করার পরামর্শ দিচ্ছে। যদি এটি সফল হয় তবে কার্যনির্বাহী আকারের চেয়ে আবাসিক সেট আকার কম রাখলে প্রক্রিয়াটি অদলবদলে এবং থেকে ছিটকে যায়। এটি পুরো সিস্টেমের কর্মক্ষমতা যথেষ্ট পরিমাণে হ্রাস করবে। যাই হোক না কেন setrlimit (RLIMIT_RSS, ...) এর জন্য লিনাক্স ম্যানুয়াল পৃষ্ঠাটি বলে যে আবাসিক সেট আকার নির্ধারণ করা আর সমর্থিত নয় এবং যে প্রক্রিয়াগুলিতে ম্যাডভাইস (MADV_WILLNEED, ...) না বলা বেছে নিয়েছিল তার কোনও প্রভাব পড়েনি।


1

আমি ঠিক 512 এমবি দিয়ে একটি ছোট হোম এনএএস বাক্সে ক্ল্যামড চালানো একই ধরণের সমস্যায় পড়েছি। নেট জুড়ে প্রশ্নের জরিপ থেকে মনে হয় মেমরির ব্যবহার হ্রাস করার কোনও উপায় নেই। বাজে জিনিসগুলির ডাটাবেস কেবল আরও বড় এবং আরও বড় হতে থাকে।

নকল-ডিমন মোডে চলার জন্য ক্ল্যামাভকে "ক্ল্যামাভ-ডেমন" না করে "ক্ল্যামাভ" ইনস্টল করে কনফিগার করা সম্ভব। এটি আপনাকে বেশিরভাগ সময় আরও স্মৃতি রাখতে দেয়। আপনি যখন আপলোডগুলি স্ক্যান করেন তখন সর্বদা র‍্যামের একটি বড় অংশের প্রয়োজন হয়।


1
এই পদ্ধতির মূল ক্ষতি হচ্ছে স্ক্যানটি করতে আরও সময় লাগবে। প্রতিবার কোনও ফাইল আপলোড করার সময়, স্ক্যানটি করার আগে ডাটাবেসটি লোড করা দরকার। আপনি ব্যবহারকারীর জন্য দ্রুত প্রতিক্রিয়া জানাতে চাইলে ডিবি লোড করতে অনেক মূল্যবান মিনিট লাগে। এছাড়াও, একই সময়ে একাধিক আপলোড প্রক্রিয়া করা হলে আপনার আরও একাধিক থ্রেড থাকবে ডাটাবেস লোড করার ফলে আরও বেশি র‍্যাম ব্যবহারের ফলস্বরূপ। অতএব ডেমনের ব্যবহার। আমার সমাধানটি ছিল আমার ভিপিএস পরিষেবাটি আপগ্রেড করা এবং অতিরিক্ত র্যামের জন্য অতিরিক্ত 5 মার্কিন ডলার / মাসে অর্থ প্রদান করা। আমি এই ব্যয় বৃদ্ধির সাথে বাঁচতে পারি :)
নীলস আর

1

এই উত্তরটি যাচাই করা হয়নি এবং এটি কার্যকর নাও হতে পারে। এটি কীভাবে মেমরির ব্যবহার হ্রাস করতে পারে তার উত্তর দেয় না, তবে কীভাবে মেমরির ব্যবহার সীমিত করতে হয় যা কিছুটা আলাদা।


আপনি ClamAV init স্ক্রিপ্টটি সম্পাদনা করতে পারবেন ( /etc/init.d/কমান্ড যুক্ত করতে int ulimit -m amountofram
এটি ClamAV এর সম্ভাবনা সীমাবদ্ধ করবে এবং আপনি সম্ভবত অদলবদল করুন যা সম্ভবত আপনার পুরো সিস্টেমকে ধীর করে দেবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.