Upstart уведомления по электронной почте

Я экспортировал сценарий выскочки через мастера и добавил строку в файл .conf для отправки электронного письма, если процесс был перезапущен. Однако, когда я когда-либо убивал процесс, чтобы проверить функциональность, он спамил мой почтовый ящик более чем 20 электронными письмами. Кто-нибудь знает, есть ли более эффективный способ сделать это, или я SOL?

start on starting square-web
stop on stopping square-web
respawn

exec su - deployer -c 'cd /rails/square; echo "Thin 5000 restarted on square.local" | mail [email protected]; export PORT=5000; export RAILS_ENV=production; rails s thin -p $PORT >> /var/log/square/web-1.log 2>&1'  

person icantbecool    schedule 28.05.2013    source источник


Ответы (1)


Проблема, скорее всего, в том, что рельсы какое-то время висят на сокете прослушивания. Это произойдет, особенно если для закрытия всех сокетов и смерти от SIGTERM требуется более 5 секунд, так как после этого выскочка отправит SIGKILL, который оставит все эти сокеты в TIME_WAIT.

Если вы можете заставить своего слушателя использовать SO_REUSEADDR, это исчезнет, ​​так как вы просто вернете порт прослушивания TIME_WAIT. Вы также можете увеличить время ожидания убийства, если ожидаете, что что-то займет больше 5 секунд:

kill timeout 20

Если вы просто хотите уменьшить спам, вы можете просто немного приостановить свою работу, чтобы дать ОС время закрыть прослушивающий сокет:

post-stop exec sleep 1
person SpamapS    schedule 05.05.2014