Это gzip, детка

Alexander Solovyov
engiKasta
Published in
2 min readOct 3, 2017

Давным-давно в незапамятные времена, а, точнее говоря, два месяца назад, в августе, обсуждали мы, что неплохо бы съехать с наших текущих балансировщиков, да не будет названо их имя, на nginx. И одна из причин тому — можно было бы включить brotli и сжимать ответы клиентам чуть-чуть лучше.

Но так как переезд — дело сложное, а включить галочку “жать сильнее” — простое, то именно это мы и сделали. Посмотрели неделю — всё вроде бы ок, никаких проблем, нагрузка не выросла, а ответы чуть (7–10%) уменьшились. Супер.

А на прошлой неделе мы сменили один из DC на другой, и, заодно, сменили провайдера интернета. И в пятницу у нас была распродажа. Неплохая по меркам “наконец лето кончилось”, но до Black Friday не дотягивает, конечно. Поэтому в принципе никто сильно и не беспокоился.

Как оказалось — зря. При наплыве посетителей (например, в одну из волн или при прямом промоушене) сайту становилось плохо: не загружался основной файл с JS. Точнее, загружался, но оооочень медленно. Сначала разок такое утром было, а потом в 8 вечера, как раз в пик продаж.

Мы, конечно, очень расстроились, потому что пакеты теряются как раз на пути к нашему балансировщику и что это за канал такой, который при загрузке на треть лимита начинает терять пакеты. Провайдер нам лимиты поднял, потому что мы были убедительны, но помочь — не помогло.

А в понедельник мы заметили, что LA на балансировщиках больше 5, хотя нагрузки на сайт нет. Мы выше 0.5 вообще никогда не наблюдали! И даже не мониторили, так как это выглядело совершенно бесполезным делом.

И когда чуть позже, в тот же понедельник, мы с тестировщиками обсуждали нагрузочное тестирование, я рассказывал о паттернах нагрузки: что при активном росте счётчика посетителей на сайте нагрузка на чтение обычно заметно выше, чем при его стабильности, а при снижении обычно больше нагрузки на запись — люди оформляют заказы и уходят дальше по своим делаем. И, интересный факт, оба раза в пятницу нам стало плохо на росте посетителей.

И вот здесь меня осенило и я вспомнил, что произошло 19 сентября — опубликовали меню каталога с 4 уровнем! А из-за того, что меню в самом начале было маленьким, из API возвращается она полностью. И после добавления 4 уровня данных стало достаточно для того, чтобы процесс их сжатия сильно повысил нагрузку на CPU балансировщиков!

И таки да, вернули степень сжатия обратно и LA ушёл. А API начали переделывать даже, но до распродажи не успели. :)

--

--