❢ Статическое дерево или быстрая загрузка навигации — вы уже заметили?

Вчера снова образовался небольшой затык на сервере.

Затык на сервере

Чтобы понимать эти данные: на верхнем графике нагрузка на сервер — число запросов к серверу в секунду (requests per second) c разными статусами. Красные столбики — это ответ «Ошибка сервера». Происходит это из за того, что можно увидеть на нижнем графике, который показывает время отклика сервера на запросы. Здесь видна доля запросов с рзным временем отклика, и видно, что периодически происходят затыки, когда большинство запросов обрабатываются по полминуты, а это уже time out.


С этим надо как-то бороться. На поверхности лежат два явления, которые необоснованно нагружают сервер.

Первое, каким бы это ни выглядело невинным, — это «колокольчик»: каждая открытая страница, даже если она была открыта вчера или неделю назад, но это вкладку выбрали — она лезет на сервер за обновлением «колокольчика». И она делает это регулярно — иначе как обеспечить актуальность! Начинали мы с интервала в 20 секунд, но быстро заткнули сервер — слишком часто. Сейчас это что-то в районе минуты-двух.

И тут есть, куда оптимизировать: иметь один процесс на все страницы, который будет следить за обновлениями (это возможно в современных браузерах), и — умная загрузка новостей: не всех, а только подверстка обновлений. И мы будем в эту сторону работать.


Но кроме этого была старая-престарая проблема, которую мы мечтали победить, но прочие приоритетные задачи не позволяли на нее отвлекаться, хотя она изрядно портит всем кровь. Всем — каждому из вас.

Начну немножко издалека. Сайт имеет довольно разветвленную структуру. Вся эта структура отражается в навигации в левой панели (на компьютерах) или под выезжающей панелью на телефонах. Вы не поверите, но логика работы приложения такова, что это дерево строится всякий раз — всякий раз, Карл! — когда запрашивается страница. То есть это не статическое дерево, построенное раз и на всегда, а динамическое. А мало ли — вдруг что-то прорастет между шестым и седьмым уроком! ;) Расчет на это.

Глупо, правда? Полный идиотизм! Оно работает так до сих пор только потому, что «работает — не трогай». И вот сегодня мы поняли, что это очередное узкое место (bottle neck) в работе сайта. Всё было когда-то некритично, но сеодня на сайте постоянно тусят десятки человек.

Вoт не самые большие цифры, что я наблюдал.

Realtime statistics

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

Вы же помните наверняка, как сперва грузится страница полностью, а потом — с заметной задержкой — строится слева дерево уроков. А ведь оно именно прям строится на сервере — при каждом запросе на страницу: запрашивается база, обходятся все элементы в дереве, чтроится JSON-файл, загружается в браузер, чтобы скрипт отрисовал дерево…

Теперь все эти этапы помножены на ноль. Дерево в уроках стало статичным. Оно по-прежнему грузится отдельным запросом со страницы, но оно грузится практически мгновенно. И это должно быть очень заметно!

Я надеюсь, вы это заметили и оценили. :)

ILYA DUMOV: Всё было когда-то некритично, но сеодня на сайте постоянно тусят десятки человек.

А можно, пожалуйста, для тех, кто в танке?))
У меня просто в течение дня в браузере открыто постоянно 4-5 (иногда больше) разных вкладок этого сайта и форума. Это как-то тормозит работу сайта? Всмысле лучше закрыть пару из них?

Je m’appelle Vlad :)

samisadorable: У меня просто в течение дня в браузере открыто постоянно 4-5 (иногда больше) разных вкладок этого сайта и форума.

Не поленился и сосчитал свои. В разных окнах их набралось 20. :)

samisadorable: Это как-то тормозит работу сайта? Всмысле лучше закрыть пару из них?

Пока вкладка не выбрана, она «молчит». В фоне никаких обращений к серверу не идет. Поэтому это не критично. При том, что сервер справляется с десятками запросов в секунду (это видно из графика), один пользователь погоды точно не сделает. Я, возможно, преувеличил вклад колокольчика. Точнее, сам по себе колокольчик — это заметная нагрузка на сервер, но она связана скорее с числом пользователей, а не числом открытых вкладок с сайтом. Но мы все равно сделаем, что запросы будут идти из одного места и раздаваться внутри браузера всем открытым вкладкам.

 
Зарегистрируйтесь или войдите чтобы оставить сообщение.