রানিট সার্ভিসের স্বয়ংক্রিয় পুনঃসূচনাগুলির হার কীভাবে নিয়ন্ত্রণ করবেন?


8

আমার এই রানিট সার্ভিসটি রয়েছে runএবং log/runস্ক্রিপ্টগুলি সঠিকভাবে কাজ করছে।

এটি হওয়ার সাথে সাথে, পরিষেবাটি নিজেই বাহ্যিক কারণে ক্র্যাশ করতে পারে এবং সম্ভবত বেশ কয়েক মিনিটের জন্য শুরু করতে সক্ষম হবে না। রানিট এই ডিফল্ট উপায়টি এই পরিস্থিতিটি পরিচালনা করে তা হ'ল প্রতি কয়েক সেকেন্ড পরে পরিষেবাটি পুনরায় চালু করা। আমি কীভাবে এই আচরণটি পরিবর্তন করব?

আমার শেষ অন্তর্দৃষ্টিটি ছিল একটি checkস্ক্রিপ্ট যুক্ত করা এবং সেখানে কিছু যাদু করা, তবে এটি হওয়া উচিত তার চেয়ে অনেক জটিল। এর চেয়ে সহজ সরল কোন উপায় আছে কি?

উত্তর:


3

তবে আমি এই সুবিধার সাথে পরিচিত নই, তবে যদি এই সমস্যাটি সমাধান করা আমার কাজ হত এবং খুব স্বল্প লোকের পৃষ্ঠা পঠন এই আচরণটি টিউন করার জন্য কোনও সহজ নকশার প্রস্তাব দেয় না, আমি নিম্নলিখিতটি করতাম:

হয় বিদ্যমান পরিষেবা শুরুর স্ক্রিপ্টটি প্রসারিত করুন, বা যদি এটি জটিল হয় তবে শৃঙ্খলে নতুন স্টার্ট স্ক্রিপ্ট প্রবেশ করান (যার ফলে মূল সূচনা স্ক্রিপ্টটি শুরু হয়)। এখনই পরিষেবাটি শুরু করার পরিবর্তে, নতুন প্রারম্ভিক স্ক্রিপ্টটি পরীক্ষা করা উচিত যে শেষ শুরুটি যথেষ্ট পর্যায়ে হয়েছে কিনা। এটি পূর্বের সূচনা দ্বারা নির্মিত সিগন্যালিং ফাইলটি পরীক্ষা করে করা যেতে পারে। যদি ফাইলটি না থাকে তবে স্ক্রিপ্টটি ফাইলটি স্পর্শ করে পরিষেবাটি শুরু করতে পারে। যদি ফাইলটি বিদ্যমান থাকে তবে স্ক্রিপ্টটিতে ফাইলটি যথেষ্ট পুরানো কিনা তা পরীক্ষা করা উচিত। যদি এটি যথেষ্ট পুরানো না হয় তবে ফাইলটি যথেষ্ট পুরানো না হওয়া পর্যন্ত এটি একটি লুপের মধ্যে অপেক্ষা করতে হবে (ঘুমান)।

এর মতো কিছু কাজ করতে পারে (পুনঃসূচনাগুলির মধ্যে কমপক্ষে 1 মিনিট অপেক্ষা করে):

#!/bin/bash

SIGNALDIR=/tmp
SIGNALFILE=service.started

while /bin/true; do
        found=`find "${SIGNALDIR}" -maxdepth 1 -name "${SIGNALFILE}" -mmin -1 | wc -l`
        [ "${found}" -eq 0 ] && break
        echo "Waiting"
        sleep 10
done

touch "${SIGNALDIR}/${SIGNALFILE}"
original service start...

এটি একটি ভাল পদ্ধতির। যত তাড়াতাড়ি আমি এটি পরীক্ষা করি, আমি কোনও সম্ভাব্য প্রয়োজনীয় সংশোধন সহ স্ক্রিপ্ট করব।
jpbochi

8

./finishঅস্বাভাবিক সমাপ্তির পরে চালিত সেই পরিষেবার জন্য আপনার ফাইলটিতে পুনরায় সূচনা হওয়া উচিত should ./finishস্ক্রিপ্ট থেকে প্রত্যাবর্তন কোড পাবেন ./runএবং থেকে সেখানে তোমরা যা কর, ইত্যাদি যে বিষয়টি জন্য নির্ধারণ করতে পারেন, আপনি আপনার থাকা উচিত ./finishস্ক্রিপ্ট ব্যর্থতা সম্পর্কে জোরে চিত্কার এবং বিজ্ঞপ্তিগুলি প্রেরণ ও আগুন চারদিকে জাম্পিং ...


ধন্যবাদ এটি সঠিক উত্তর তবে দুর্ভাগ্যক্রমে আধুনিক প্রোগ্রামাররা পাইথন, রুবি ইত্যাদি ব্যবহার করে সর্বদা এমন অ্যাপ্লিকেশন লিখতে বলে মনে হয় যা ইউনিক্স সংকেতগুলিতে কোনও মনোযোগ দেয় না এবং সঠিকভাবে প্রস্থান কোডগুলি সরবরাহ করে না।
tra টায় ফিগ্রেটপ

1
প্রত্যাবর্তিত ত্রুটি কোডগুলি দৃশ্যত "অনুপযুক্ত" আমার ধারণা?
এভারি পায়েেন

দেখতে এটার মত. আমি নিজেকে এটি পিছনে একটি দুর্দান্ত পদক্ষেপ মনে করি।
ফিগল্যাপ

1

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

সুতরাং, আমি আপনাকে প্যাচগুলি প্যাচ না করে প্রতিস্থাপনের জন্য অনুসন্ধান করতে উত্সাহিত করব।

মনিত বেশ বয়স্ক, তবে এটি কাজটি ভালভাবে করে এবং আমি আরও ভাল কিছু নিয়ে আসছি না। এটি স্টার্ট-আপের পরে আরও মেমোরি না করার প্রয়োজনের দুর্দান্ত বৈশিষ্ট্যটি পেয়েছে, সুতরাং স্ক্রিপ্টিং ভাষায় লিখিত কোনও কিছুতেই নরকে মারধর করে। আপনি চান সর্বশেষ জিনিসটি হ'ল আপনার প্রক্রিয়া মনিটর মারা যাবেন কারণ এটি মেমরি পেতে পারে না।


systemd হল, এবং EL7 অন্তর্ভুক্ত সবচেয়ে অন্যান্য ডিস্ট্রিবিউশন, স্থানীয়ভাবে এই পরিস্থিতি এবং সঙ্গে অনুরূপ পরিস্থিতিতে বিভিন্ন ব্যবস্থা করতে সক্ষম বিকল্প একটি বৃহদায়তন সংখ্যা এবং বেশিরভাগ এই অপ্রচলিত মত প্রক্রিয়া পরিচালকদের করে তোলে।
মাইকেল হ্যাম্পটন

1
কয়েকটি ছোট ছোট পরিস্থিতি রয়েছে যেখানে লক্ষ্যযুক্ত পরিবেশের জন্য সিস্টেমড "খুব বড়" হতে পারে। এবং "চলমান অবধি পুনরায় চালু করে প্রক্রিয়া পরিচালনার" পুরানো পদ্ধতিটি বেশিরভাগই সঠিক নির্ভরতা রেজোলিউশন দ্বারা বরখাস্ত করা হয়েছিল। উদাহরণের জন্য skarnet.org/software/s6-rc এবং jjacky.com/anopa দেখুন ।
অ্যাভেরি পেইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.