2013-05-28 4 views
2

Я экспортировал скрипт 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' 

ответ

1

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

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

kill timeout 20 

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

post-stop exec sleep 1 
Смежные вопросы