… В результате которого рабочий иногда падал, валя за собой всю проксю. Как и предполагал, дело оказалось в рекурсии, которая не могла быть развёрнута в tail из-за не пойманных исключений внутри. Это можно назвать минусом смешивания чистой функциональщины с чем-то ещё. Но, увы и ах, ловить все исключения внутри нельзя.
Заменил рекурсивный вызов на цикл, и уже двое суток работаем ровно и без падений; обработано около 2000000 реальных соединений к MySQL.
Кстати…
Уже можно подвести итог, насколько в условиях хостинга с абстрактным набором сайтов (как правило, кривых :), нагружен мускуль. Статистика за сутки. Машина средней мощи, набито правильное количество клиентов.
Активных пользователей в MySQL: 453
Из них, имеющих соединие каждые 5 минут за сутки (т.е. работающих круглосуточно): 46
Принято данных от пользователя (байты голого протокола): 9015309900
Передано байт: 121983229037
В сумме потрачено времени внутри MySQL: 138884 секунды (не забываем, что мускуль умеет жрать несколько процессоров)
Обработано запросов (в т.ч. авторизация и протокольная команда QUIT считаются запросами): 61044220
Это данные за сутки назад, включая бэкапный трафик (прибавляет ~15% ко всем циферкам).