Как я задосил squid аудиоплеером
Сегодня днём завалился squid в конторе, потом завалился второй раз. Симптомы были одни и те же — процесс squid сжирал всю память на машине, и переставал отвечать на запросы. «Расследование» выявило забавный баг.
Просмотр cache.log после первого падения не выявил ничего криминального, кальмар был перезапущен, но через несколько часов симптотмы повторились.
После второго падения и перезапуска, я полез в access.log, и у меня встали волосы дыбом — огромное количество запросов к post.audioscrobbler.com с ответом TCP_DENIED.
Разгадка оказалась проста: именно сегодня утром я поставил себе на машину плеер clementine, настроил его на свою учётку last.fm, и начал пользоваться, оставив настройку прокси на стандартном значении — «использовать системные настройки прокси».
И вот вместо того, чтобы ругнуться на невозможность подключиться к last.fm, и предложить ввести логин и пароль, clementine продолжал бомбардировать прокси запросами, в результате тот и сдавался под напором эдакого нечаянного dos'a.
В цифрах:
Общий объём логфайла сквида составил 365 мегабайт.
Из них запросов к last.fm на 310 мегабайт
Всего 2.998.894 запроса к last.fm со статусом TCP_DENIED.
Считая, что работал clementine без перерыва с 10 утра до приблизительно 15:30, получаем грубо 151 запрос в секунду. Для нашей маленькой прокси (виртуалка с выделением 1Ггц и 1Гб ОЗУ) — это много.
Ссылка на запощенный багрепорт.
Мораль — не доверяйте настройкам по умолчанию :)