কীভাবে স্থায়ীভাবে ডিমনগুলির জন্য ওম কিলার সমন্বয় সেট করবেন?


12

কয়েকটি লিনাক্স সার্ভারকে একক বা কয়েকটি কয়েকটি অত্যাবশ্যক সিস্টেম পরিষেবাদি ডেমন দিয়ে চালানো, আমি কিছু অদ্ভুত ঘটনা ঘটলে সেই ডিমনাইজড প্রক্রিয়াগুলির জন্য ওওএম কিলারকে সামঞ্জস্য করতে চাই। উদাহরণস্বরূপ, আজ কিছু উবুন্টু সার্ভার মাইএসকিউএল চলমান কারণ টন নিহত মাইএসকিউএল ডেমন পেয়েছিলাম apt-checkerপ্রসেস করা হয় সব স্মৃতি ব্যয়কারী এবং কার্নেল ভেবেছিলাম এটা মাইএসকিউএল হত্যা করতে একটি ভাল ধারণা ছিল।

আমি জানি যে আমি /proc/$(pidof mysqld)/oom_score_adjফাইলটি ব্যবহার করে স্কোর সামঞ্জস্য করতে পারি কার্নেলকে কিছু ক্লু দেওয়ার জন্য আমি মাইএসকিউএলকে হত্যা করতে পছন্দ করি না, তবুও এটি পরিষেবাটি পুনরায় আরম্ভ করতে বাঁচতে পারে না। এই সমন্বয়গুলি অন্তর্ভুক্ত করার জন্য আমার কি প্যাকেজ থেকে init / upstart স্ক্রিপ্টগুলি সম্পাদনা করা উচিত? আমি মনে করি না যে এটি একটি খুব মার্জিত সমাধান কারণ আমি কোনও প্যাকেজভুক্ত ফাইলগুলিতে সামঞ্জস্য করব। সাধারণভাবে আপস্টার্ট / আরআইএন স্ক্রিপ্টগুলিতে প্রবেশ করা এবং শর্তসাপেক্ষে এটি সামঞ্জস্য করা সম্ভব হবে কি? অথবা আপনি কি অনির্দিষ্ট স্ক্রিপ্টটি চালানোর পরামর্শ দিচ্ছেন while true{ adjust_oom(); sleep 60;}?


আকর্ষণীয় যে সামঞ্জস্য করার সম্ভাবনা আছে। আমার ধারণা, কাজটি সম্পাদনের জন্য আপনার অসীম লুপের চেয়ে ভাল আর কিছুই নেই। ওওএম-হত্যাকারীটি কার্নেলের অভ্যন্তরে গভীরভাবে সমাধিস্থ করা হয় এবং এতে খুব অস্পষ্ট একটি অ্যালগরিদম থাকে।
নিলস

উত্তর:


8

বেশ কয়েকটি আধুনিক ডমন তদারকি সিস্টেমগুলির এটি করার একটি উপায় রয়েছে। (আসলে, যেহেতু কাজের জন্য একটি চেইন লোডিংয়ের সরঞ্জাম রয়েছে, তত যুক্তিযুক্ত তাদের সকলেরই এটি করার একটি উপায় রয়েছে means)

  • আপস্টার্ট:oom score কাজের ফাইলটিতে ব্যবহার করুন।
    ওম স্কোর -500
  • systemd:OOMScoreAdjust= পরিষেবা ইউনিটে সেটিংসটি ব্যবহার করুন । প্রাক-প্যাকেজযুক্ত পরিষেবা ইউনিটগুলিকে প্রভাবিত করতে আপনি পরিষেবা ইউনিট প্যাচ ফাইলগুলি ব্যবহার করতে পারেন।
    [পরিষেবা] 
    OOMScoreAdjust = -500
  • ডিমনটোলস পরিবার : পরিষেবাটির জন্য প্রোগ্রামে নশ টুলসেটoom-kill-protect থেকে সরঞ্জামটিব্যবহার করুনrun

    যদি আপনি কোনও সিস্টেম পরিষেবা ইউনিট convert-systemd-unitsরূপান্তর করেন তবে সরঞ্জামটি OOMScoreAdjust=সেটিংটিকে বাস্তবে এর অনুরোধে রূপান্তরিত করে oom-kill-protect

    #! / বিন / নশ 

    ওম-কিল-রক্ষা - -500

    প্রোগ্রাম আর্গুমেন্ট
    বোনাস হিসাবে, আপনি এটি পরামিতিযোগ্য করতে পারেন:
    oom-হত্যা-সুরক্ষা - fromenv
    এবং পরিষেবার পরিবেশে প্যারামিটারটির মান নির্ধারণ করুন (পরিষেবাটির সাথে সম্পর্কিত কোনও এনভডিরের কাছ থেকে পড়ার জন্য অনুমান করা হয়, এখানে নশ টুলসেটের শিমের সাহায্যে হেরফের করা হয়েছে rcctl):
    rcctl সেট servicename oomprotect -500

আরও পড়া

  • জোনাথন ডি বয়েন পোলার্ড (2016)। oom-kill-protect। নশ টুলসেট সফটওয়্যার।
  • জেমস হান্ট এবং ক্লিন্ট বাইরাম (2014)। " oom score"। আপস্টার্ট কুকবুক
  • লেনার্ট কবিতা (2013-10-07)। " OOMScoreAdjust"। systemd.exec। সিস্টেমযুক্ত ম্যানুয়াল পৃষ্ঠাগুলি। freedesktop.org।
  • জোনাথন ডি বোয়েন পোলার্ড। rcctl। নশ টুলসেট সফটওয়্যার।
  • /unix//a/409454/5132

9

এটি আপস্টার্ট এবং oom scoreকনফিগারেশন বিকল্পটি ব্যবহার করে উবুন্টুতে সম্ভব ।

oom score

লিনাক্সে একটি "আউট অফ মেমরি" কিলার সুবিধা রয়েছে। [...]

সাধারণত OOM হত্যাকারী সমস্ত প্রক্রিয়া সমানভাবে বিবেচনা করে, এই স্তবটি কার্নেলকে এই কাজের সাথে অন্যরকম আচরণ করার পরামর্শ দেয়।

এই স্তরে প্রদত্ত "সমন্বয়" মানটি -৯৯৯ (ওওম ঘাতক দ্বারা নিহত হওয়ার খুব কম সম্ভাবনা) থেকে 1000 অবধি (ওওএম ঘাতক দ্বারা নিহত হওয়ার খুব সম্ভবত) হতে পারে inte [...]

উদাহরণ:

# this application is a "resource hog"
oom score 1000

expect daemon
respawn
exec /usr/bin/leaky-app

উবুন্টু 16.04+ ব্যবহারকারী পাঠকদের জন্য, এটি এখন অপ্রচলিত হয়ে উঠেছে যে আপস্টার্টটি সিস্টেমড দ্বারা প্রতিস্থাপন করা হয়েছে।
জার্মটভিডিজক

4

আপনি এটিকে নিজেই মাইএসকিউএল এ হ্যাক করতে পারেন (উদাঃ ওপেনএসএইচএস এর কাজ sshdকরে) তবে এটি কিছুটা হার্ড এবং খুব নোংরা (আপডেট ইত্যাদি সমস্যা)

আপনি এটি একটি মোড়কের সাহায্যে বা init স্ক্রিপ্টে করতে পারেন - স্কোরটি উত্তরাধিকার সূত্রে প্রাপ্ত হওয়া উচিত (এবং কোনও র‍্যাপারে আপনি সম্ভবত যে exec mysqld "$@"কোনও উপায়ে করতে চান)।

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

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