3 горизонтальные линии, бургер
3 горизонтальные линии, бургер
3 горизонтальные линии, бургер
3 горизонтальные линии, бургер

3 горизонтальные линии, бургер
Удалить все
ЗАГРУЗКА ...

Содержание



    Как я боролся с задержкой ответов сервера и постоянными прерываниями

    Часы
    29.09.2024
    /
    Часы
    02.10.2025
    /
    Часы
    4 минуты
    Глазик
    2151
    Сердечки
    1
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0

    Обзор проблемы и её возможный источник

    Началось всё довольно невинно, проверял в очередной раз работу пагинатора, думал как бы улучшить его так, чтобы не лезть на сервер. Как вдруг жду загрузку страницы уже как 10 секунд, потом 20, потом минуту. Я так и не дождался.
    Ну класс, наверное опять напортачил в JS или ещё хуже в Django представлении. Сделав быструю интроспекцию кода и протестировав его несколько раз, я не нашёл ошибки.
    Это вдруг стало интересно и п****ц как угнетать _(┐「ε:)_. Ведь с такой работой сайта мои поведенческие факторы резко упадут. И я начал думать, что могло статься с сайтом. Есть 4 возможных источника проблем:
    • У меня просто плохой интернет и плохо ловит.
    • Какие-то проблемы с сайтом
    • Какие-то проблемы с браузером
    • Какие-то проблемы с сервером
    Первый вариант отпал, проверив скорость связи, я двинулся дальше.

    Возможно проблема в моём сайте

    Со вторым вариантом, предстояло разобраться. Видишь ли, задержка была не только на страницах пагинации, а на всём сайте. Даже админка, и та испытывала задержки. Что общее связывало обычные статические страницы, пагинатор, статьи и django-админку? Только одна вещь - это модели. Я подумал, хм …, а может я как-то плохо делаю запросы в базу данных? И этот вариант то же отпал, ибо я ни как не влияю на то как делаются запросы в базу данных со стороны админки, но она тоже лагает.
    Тогда, может дело в самих моделях? Я недавно очень сильно их менял и создал не мало миграций. Что конечно могло повлиять на общую скорость, но единственным способом проверить это, значит снести всю базу данных и пере заполнить её ещё раз ВРУЧНУЮ. Да, конечно, она не сильно большая, 25 статей 65 определений, 30 вопросов ещё 20 инструментов и архивов. Но чёрт, я отложил этот вариант на потом. Да и судя по проектам которые я видел, мои 10 миграций это ничто, по сравнению с ними.
    Шеврон Забавный факт. Я обнаружил пару проблем с пагинатором в ходе этого расследования. Например, я плюсовал строку и число, там где проводилась проверка на необходимость добавлять триггер-элемент, который бы подгружал новые посты. Как до этого пагинатор работал я бес понятия (⁄ ⁄•⁄ω⁄•⁄ ⁄)
    Шеврон Ещё один забавный факт. Несмотря на то, что мой сайт не являлся причиной проблем задержек, я протестировал большую часть кода на время выполнения. И там где оно было очень большим, я оптимизировал его и сделал быстрее.

    Может, браузер проблема

    Третьим вариантом было то, что у меня что-то с браузером. По этому я пересел на хром, и не поверите, сработало. Ну ..., то есть почти. Лаги и задержки остались, но хром дождался и в конце концов возвращал мне необходимые страницы. С админкой было то же самое.
    Как ты можешь видеть, целых десять секунд хром просто ждал. И в документации хрома сказано, что Stalled состояние значит, цитата:
    Шеврон
    Chrome documentation
    • Есть запросы с более высоким приоритетом.
    • Для этого источника уже открыто шесть TCP-соединений, что является пределом.Применяется только к HTTP/1.0 и HTTP/1.1.
    • Браузер ненадолго выделяет место в дисковом кеше.
    Теперь нужно узнать какая ошибка возникает при попытке достучаться до сервера. Для этого нужно сделать дамп сетевой активности, во время запроса на сервер. Введём chrome://net-export такой запрос в поиск и начнём записывать наш дамп.
    После того как я поймал очередной простой и записал дамп нужно будет его ещё прочитать. Откроем https://netlog-viewer.appspot.com/#import и перейдём в EVENTS. Найдём соответствующее событие. В моём случае это был запрос страницы пагинации статей.
    Откроется ещё одно окно в котором можно найти огромный скачок во времени:
    Здесь можно выделить ошибку ERR_HTTP2_PING_FAILED. Эта ошибка говорит, что «клиент», то есть браузер, не дождался ответа на запрос. По этому он попытался сделать ещё один запрос и о чудо, сервер ответил. И чтобы наверняка убедиться что эта проблема не связана с работой браузера я ещё сделал следующие вещи, которые не помогли:
    • Обновил браузеры до последних версий (они уже были у меня)
    • Очистил кеш и куки
    • Отключил все расширения
    • Отключил эксперементальную фичу QUICK (только для хрома)
    • Очистил DNS кеш
    Полный список, того что можно было бы сделать в такой ситуации ты найдёшь на сайте https://10web.io/blog/resolving-the-err_http2_protocol_error/

    Тогда, дело в хостинге

    Всё это оставило меня с последним вариантом, что-то с сервером и хостингом. Но я так ничего и не нашёл. Ни в одном из доступных мне конфигурационных файлах. И начал думать о том, чтобы обратиться в службу поддержки хостинга. Хотя перед этим шагом, чтобы не обвинять их зря, ведь возможно я что-то упустил или не досмотрел. Было решено развернуть сайт на другом хостинге и посмотреть что будет там.
    Славу всем ДНС серверам и двоичному коду, до этого не дошло.
    Давай вернёмся в самое начало, где я проверял качество интернета. Так вот, я решил проверить сам IP. То есть поменять его используя VPN и прокси. И вот свершилось, без каких-либо задержек (учитывая тот факт, что я использую VPN). То есть мой IP, каким-то образом попал в чёрный список beget и теперь нужно его от туда вытащить, или просто использовать прокси для доступа к сайту.
    Вот такое вот небольшое расследование я провёл. Чувствую себя как мамин хацкер или даже пентестер ( ^◡^)

    Не забудь поделиться, лайкнуть и оставить комментарий)

    Комментарии

    (0)

    captcha
    Отправить
    ЗАГРУЗКА ...
    Сейчас тут пусто. Буть первым (o゚v゚)ノ

    Другое

    Похожие статьи


    Как развернуть Django сайт на бегет хостинг (или VPS). Полная инструкция.

    Часы
    12.05.2024
    /
    Часы
    02.10.2025
    Глазик
    5616
    Сердечки
    3
    Соединённые точки
    1
    Соединённые точки
    2
    Соединённые точки
    0
    Это статья-инструкция о том как можно разместить django-сайт на beget. Показываю два способа (деплой на хостинге и деплой на VPS). Плюс, как настроить и подключить базу данных, почту, статику и …

    Пустой(Стартовый) проект на Django. Как сделать и что для этого нужно

    Часы
    19.07.2024
    /
    Часы
    05.10.2025
    Глазик
    308
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    О создании пустого или стартового django проекта, используя виртуальное окружение и с последующим запуском тестового сервера.

    Доработал пагинатор и добавил теговую систему на сайт

    Часы
    22.09.2024
    /
    Часы
    02.10.2025
    Глазик
    376
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Были использованны SEO рекомендации от Google для улучшения пагинатора и бесконечной ленты с использованием изменений состояний url страницы. Так же была разработана теговая система для сайта с галереей

    Причины ошибки err_http2_ping_failed и способ решения задержки ответов сервера

    Часы
    29.09.2024
    /
    Часы
    02.10.2025
    Глазик
    2151
    Сердечки
    1
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    В этой статье, я подробно опишу как я решил проблему задержек и постоянных прерываний ответов с сервера. Опишу работу ошибки err http2 ping failed и какие шаги я предпринял чтобы …

    Использованные термины


    Релевантные вопросы