dastapov: (Default)
[personal profile] dastapov
Раз уж в предыдущих комментариях затрагивалась тема божественности рекурсии, расскажу я вам баечку про рекурсию.

Начиналась история достаточно безобидно.

Жил да был некий администратор. И в служебные обязанности ему вменялось следить за нормальной работой N важных систем. В какой-то момент, когда систем стало N+1, он задумался о том, что надо как-то облегчать свою жизнь.

Например, сделать так, чтобы его уведомляли о самых страшных и приоритетных проблемах SMS-ами на его мобильный телефон.

Сказано - сделано, благо администратор работал в компании, предоставляющей услуги мобильно связи, и организовать email2sms ему было - раз плюнуть.

И вот уже написан скрипт, который мониторит /var/log/* на предмет критических ошибок. Скрипт написан на perl, весь ощетинился regexp-ами, красота неописуемая.

Долго ли, коротко ли, приходит конец рабочего дня. Администратор прописывает скрипт в cron, с запуском раз в минуту и идет домой.

И надо же такому было случиться, что именно в эту ночь на одной из подшефных систем случается какой-то сбой - кажется, место в /var закончилось. Монитор дискового пространства пишет об этом запись в syslog. Скрипт-уведомитель уже тут как тут - отсылает администратору SMS, пишет об уведомлении запись в свой лог. Точнее, пытается - места-то нет. А это ошибка в работе скрипта, о которой тоже надо уведомить администратора по SMS!

Через минуту все повторяется. И еще раз. И еще раз. И еще много, много раз. А надобно заметить, что особенность системы коротких сообщений сети GSM в том, что телефон может одномоментно принять и хранить ограниченное количество сообщений. В те далекие времена новые SMS-ы хранились только на SIM-карте, и помещалось их туда от силы 10.

После того, как администратору пришло 10 SMS-ов и буфер в SIM-карте забился, все остальные SMS-ы стали накапливаться на SMSC (центре доставке SMS), пока и там не закончилось место для очереди SMS-ов для одного конкретного абонента. Тогда письма стали накапливаться в очереди sendmail-а на том сервере, с которого посылались уведомления.

А утром пришел администратор, постучал по скрипту и сказал: "Горшочек, не вари".

Впрочем, к этому моменту манной каши уведомлений уже было сгенерировано на пол-года вперед. Хорошая новость заключалась в том, что очередь sendmail-а можно было просто почистить. Плохая новость заключалась в том, что почистить очередь на SMSC не представлялось возможным.

Администратор попробовал удалять SMS-ы на телефоне, но вместо них сразу же приходили новые, точно такие же.

Пришлось ему ждать 5 суток, пока SMS-ы на SMSC не протухли и не распались на 100% recyclable электроны.

Мораль басенки: организовывая рекурсию, не забывай про организацию грамотной базы :)

Profile

dastapov: (Default)
Dmitry Astapov

May 2022

M T W T F S S
       1
2345678
9101112131415
161718 19202122
23242526272829
3031     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags