নির্দিষ্ট প্রক্রিয়ার জন্য সিপিইউ + র‌্যাম সংরক্ষণের জন্য কীভাবে সংস্থান ব্যবহারের সীমাবদ্ধ করবেন?


25

আমার একটি ডেভ সার্ভার রয়েছে যার উপর sshdকখনও কখনও কাজ বন্ধ হয়ে যায় কারণ মেশিনটি র‍্যামের বাইরে চলে যায়। হ্যাঁ আমরা স্মৃতিশক্তি কম করছি এবং আপগ্রেড করা এখনই সম্ভব্য পছন্দ নয়। আমি যা করতে চাই তা হ'ল মেশিনটিকে বলা: "আপনি যা চান তাই করুন তবে 20MB এবং কিছু সিপিইউ ছেড়ে দিন sshd!"!

যে কিভাবে করা যাবে?


এসএসডি এর মতো উড়ে যাওয়া উচিত নয়, এটি সাধারণত খুব ভাল আচরণ করা ডেমন। এটি সর্বশেষ / সর্বশেষে আপডেট হয়েছে তা নিশ্চিত করুন। আপনি এটি দিয়ে কি করছেন? আপনি কি এর মাধ্যমে প্রচুর ডেটা পাইপ করছেন?
মার্সিন

2
@ মার্সিন আমার মনে হয় না আমি কিছু বড় করছি, পাঠ্য সম্পাদনা করছি। এমনকি যদি sshdভাল আচরণ করা হয়, তবে আমি মনে করি যে এটি ব্যবহারের জন্য পর্যাপ্ত সিপিইউ / র‌্যাম না থাকলে এটি আটকে থাকবে?
ফুনেহে

লিনাক্স যখন মেমরির বাইরে চলে যায় তখন এটি মেমরির পুনঃ দাবি করতে প্রক্রিয়া বন্ধ করে দেয় killing আপনি হয়ত OOM কে কর্মে দেখছেন (মেমোরি কিলারের বাইরে)। কেন জানি না কেন এটি আপনার এসএসডি ধারাবাহিকভাবে হত্যা করার সিদ্ধান্ত নেবে। আপনি কি কখনও দেখেছেন যে এসএসডি আসলে খুব মারাত্মকভাবে ফুটো হয়ে উঠেছে (আকারে বড় হওয়া) এটি ফুঁকানোর আগে, বা এটি এক মুহুর্তে ভাল কাজ করে এবং তার পরেরটি মারা যায়?
মার্সিন

@ মার্সিনের সম্ভাবনা হ'ল তিনি যদি ওওম হন তবে সিস্টেমটি এতটা কুপিয়েছে যে সে কেবলমাত্র সাড়া দিতে পারে না, এটি কোনও এসএসডি সমস্যা নয় তবে তার বোঝা নিয়ে একটি সমস্যা। দুর্ভাগ্যক্রমে আমি এর উত্তর জানি না।
xenoterracide

@ ফুনুহে আপনি কি নিশ্চিত যে সমস্যাটি এসএসএসের জন্য কোনও স্মৃতি নয় এবং আপনার বোঝা ছাদের মধ্য দিয়ে নয়? এসএসডি কোন ত্রুটি দেয়? বাক্সে বোঝা কী? এবং সিস্টেমটি মেমরির বাইরে চলে যাওয়ার কারণ।
xenoterracide

উত্তর:


9

আপনি সম্ভবত ব্যবহার করে ওই জাতীয় কিছু অর্জন করতে পারেন Cgroups সঙ্গে মেমরি রিসোর্স নিয়ামক

আমার ধারণা আপনি আপনার সমস্ত রিসোর্স গ্রহণের কাজগুলি একটি সীমাবদ্ধ (সিপিইউ এবং র‌্যাম) এ রেখেছিলেন cgroupএবং sshd"বাইরে" রেখে যান যাতে এটি সীমাবদ্ধ না হয়।

(আরও কিছু অদলবদল, এমনকি একটি সোয়াপ ফাইল আকারে যুক্ত করা, যদিও এটি একটি ভাল বিকল্প হতে পারে))


আমি এখনও দ্বিধাগ্রস্থ, এটি সহজ দেখাচ্ছে না (উবুন্টু দ্বারা নষ্ট)
ফুনেহে

ওহ এটি অবশ্যই সহজ নয় :-) অদলবদল যোগ করা আরও সহজ।
মাদুর

সাইফ অ্যাডমিন হওয়ার জন্য @ ফুনুহে আপনাকে স্বাগতম, এটি সহজ নয়। তবে এখন আপনাকে শিখতে হবে কীভাবে সহজ জিনিসগুলি না করা যায়।
xenoterracide

6

ওহ তবে সিগ্রুপগুলি সহজ :) libcgrou প্যাকেজটি ইনস্টল করুন। একটি /etc/cgconfig.conf তৈরি করুন:

mount {
    cpu     = /cgroup/cpu_and_mem;
    cpuacct = /cgroup/cpu_and_mem;
    memory  = /cgroup/cpu_and_mem;
}

group sshd {
        cpu {
                cpu.shares="500";
        }
        cpuacct {
                cpuacct.usage="0";
        }
        memory {
                memory.limit_in_bytes="1G";
        }
}

group nosshd {
        cpu {
                cpu.shares="500";
        }
        cpuacct {
                cpuacct.usage="0";
        }
        memory {
                memory.limit_in_bytes="1G";
        }
}

cgconfigপ্রক্রিয়া শুরু করুন যা স্তরক্রম, সিগ্রুপ এবং সীমাবদ্ধতা তৈরি করবে create যদি এটি সফল হয়, আপনার দুটি সিগ্রুপ রয়েছে, উভয়ের উভয়ই সিপিইউ নির্ধারিত 50% এবং 1G মেমরি উপলব্ধ রয়েছে (জানেন না যে আপনার উপলব্ধ মেমরির আসল পরিমাণ কী; উদাহরণস্বরূপ এটি 2G ধরে নিচ্ছেন)। এখন আপনাকে কেবলমাত্র সমস্ত কার্য (যেমন সিস্টেমে চলমান সমস্ত প্রক্রিয়া) মূল গোষ্ঠী থেকে নোশিড সিগ্রুপে স্থানান্তরিত করতে হবে:

cgroup]# cat tasks >> nosshd/tasks
cgroup]# echo > tasks

তারপরে আপনাকে কেবল sshdপ্রক্রিয়াটির পিআইডি পেতে এবং এটি sshd টাস্ক ফাইলের তথ্য সরিয়ে নেওয়া দরকার:

cgroup]# echo $PID >> sshd/tasks

তা-দা, তুমি হয়ে গেছ। আপনি এখন আশ্বস্ত থাকতে পারেন যে sshd এর সর্বদা 50% CPU এবং 1G মেমরি থাকবে।


1

অ্যাকাউন্টিংয়ের reniceজন্য উচ্চতর অগ্রাধিকার পেতে sshdবা পরীক্ষা করতে ব্যবহার করুন (acct) -> এটির সাহায্যে আপনি ব্যবহারকারীদের জন্য সংস্থান স্থাপন করতে পারেন, সুতরাং এস এর সাথে এসএসডিডি চালান


আমি ioniceএটিতেও যুক্ত করব, এবং সম্ভবত পরে এটি পুনর্নিবিবেচনা না করেই এসএসডি শুরু করব।
xenoterracide

1

অ্যাপ্লিকেশন রিসোর্স ব্যবহারের সমস্যার আরও সাধারণ সমাধান হ'ল ডকার ব্যবহার করে আপনার অ্যাপ্লিকেশনগুলি চালিত পাত্রে চালানো । তারপরে আপনি সিপিইউ এবং মেমরির ব্যবহারের সীমা সিগ্রুপের মতো পাত্রে চালাতে পারেন ।

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