0

以下のスクリプトは、Memcache サーバーがダウンしているかどうかを実際にチェックし、Mmecache サーバーを起動します。

#!/bin/bash
ps -eaf | grep 11211 | grep memcached
# if not found - equals to 1, start it
if [ $? -eq 1 ]
then
memcached -d -m 16 -p 11211 -u nobody
else
echo "eq 0 - memcache running - do nothing"
fi

このスクリプトをcrontabでこのように設定して、1分ごとに実行する場合

* * * * * /usr/bin/memcached_autostart.sh

サーバーのパフォーマンスが何らかの形で低下しますか?? それとも大丈夫ですか??

あなたの経験を共有してください。

4

2 に答える 2

4

memcached がすでに実行されている場合はサイレントにする必要がありますが、サーバーのパフォーマンスに大きな影響はありません。そうしないと、毎分電子メールを送信することでサーバー時間とあなたの時間の両方が無駄になります。

しかし、もっと良い方法があります。systemd プロジェクトと daemontools プロジェクトはどちらも、サービスを監視して実行し続けるように設計されています。または、sysvinit を使用している場合は、memcached コマンドを /etc/inittab に追加して、sysvinit が終了した場合にサービスを再生成し続けるようにすることができます。

于 2012-11-11T18:11:21.880 に答える
2

これを毎分実行しないよりも遅くなります。あなたのコードは、次のようにして多少最適化することができます

pidof memcached || memcached…

memcached をデーモン化する代わりに、次のようなこともできます

while true ; do memcached -m 16 -p 11211 -u nobody ; done

その場合、ポーリングせずに終了後に再起動されます。ただし、頻繁に再起動する場合は通知を受け取るようにしてください。これは、何か問題が発生したことを意味します。

于 2012-11-11T18:11:31.100 に答える