मेरी टीम का एक सदस्य एक अधिक चतुर समाधान के साथ आया था, जो मोनिट को बार-बार (हर मिनट) चेक करने की अनुमति देता है , लेकिन एक बार सेवा को फिर से शुरू करने का प्रयास किया है (जो कि ~ 10 मिनट लगते हैं) यह शुरू होने से पहले एक निर्दिष्ट अनुग्रह अवधि की प्रतीक्षा करेगा। फिर।
यह चेक के बीच लंबे समय तक प्रतीक्षा करने से रोकता है, जो धीमी शुरुआत के साथ संयुक्त ग्राहकों के लिए बहुत बड़ा प्रभाव है। यह एक मध्यवर्ती स्क्रिप्ट का उपयोग करके काम करता है जो यह दर्शाता है कि मोनिट को इंगित करने के लिए ध्वज पहले से ही अंतिम विफलता से कार्रवाई कर रहा है।
check host bamboo with address bamboo.mysite.com
if failed
port 443 type tcpSSL protocol http
and status = 200
and request /about.action
for 3 cycles
then exec "/bin/bash -c 'ps -ef | grep -v "$$" | grep -v "grep" | grep restartBamboo.sh >/dev/null 2>&1; if [ $? -ne 0 ]; then /opt/monit/scripts/restartBamboo.sh; fi'"
यदि एक पंक्ति में 3 मिनट के लिए बांस (धीमी शुरुआत वाला वेब ऐप) डाउन है, तो पुनरारंभ करें, लेकिन केवल तभी पुनरारंभ करें जब कोई स्क्रिप्ट स्क्रिप्ट पहले से ही नहीं चल रही हो।
स्क्रिप्ट जिसे कहा जाता है, उसमें एक निर्दिष्ट नींद होती है जो LONGER का इंतजार करती है फिर सेवा के लिए सबसे धीमी शुरुआत का समय (हमारे मामले में हम ~ 10 में समाप्त होने की उम्मीद करते हैं, इसलिए हम 15 के लिए सोते हैं)
#!/bin/bash
echo "Retarting bambo by calling init.d"
/etc/init.d/bamboo stop
echo "Stopped completed, calling start"
/etc/init.d/bamboo start
echo "Done restarting bamboo, but it will run in background for sometime before available so, we are sleeping for 15 minutes"
sleep 900
echo "done sleeping"