Запрос/Ответ Apache Слишком Медленный

У меня есть Apacheсервер с 16 ГБ оперативной памяти. Скрипт cap.phpвозвращает очень маленький кусок данных (500B). Он запускает соединение mysql и делает простой запрос.
Однако ответ от сервера, на мой взгляд, слишком длинный.
Я прикрепляю скриншот панели инструментов разработчика в Chrome.
Введите описание изображения здесь

Кроме SSL и TTFB есть странная задержка 300ms (Stalled).
Если я попробую завиток с веб-сервера:

 curl -w 'nLookup time:t%{time_namelookup}nConnect time:t%{time_connect}nPreXfer time:t%{time_pretransfer}nStartXfer time:t%{time_starttransfer}nnTotal time:t%{time_total}n' -k -H 'miyazaki' https://127.0.0.1/ui/cap.php

Lookup time:    0.000
Connect time:   0.000
PreXfer time:   0.182
StartXfer time: 0.266

Total time:     0.266

Кто-нибудь знает, что это такое?

2 ответа

  1. В конце концов, я обнаружил, что если вы используете SSL, это действительно лучше, и это действительно имеет значение, чтобы переключиться на KeepAliveдирективу ApacheВ. Смотрите рисунок ниже.

    Введите описание изображения здесь

  2. Согласно документации Chrome:

    Stalled / Blocking

    Время ожидания запроса до его отправки. Это время включает в себя любое время, проведенное в прокси-переговорах.
    Кроме того, это время будет включать, когда браузер ждет
    уже установленное соединение, чтобы стать доступным для повторного использования,
    выполнение максимум шести TCP-подключений Chrome на исходное правило.

    Таким образом, это, по-видимому, проблема клиента с Chrome, разговаривающим с сетью, а не проблема конфигурации сервера. Поскольку вы делаете только один запрос, я думаю, что мы можем исключить ограничение TCP для источника (если у вас нет много других вкладок, использующих эти соединения), поэтому можно предположить, либо ограничения на вашем компьютере (сетевая карта, ОЗУ, процессор) или проблемы инфраструктуры (например, вы подключаетесь через прокси-сервер, и это занимает время, чтобы настроить это соединение).

    Ваш запрос curl, кажется, не показывает эту задержку, поскольку у него есть только время ожидания 0.182 для отправки запроса (что легко объяснить с помощью согласования https), а затем общее время загрузки 0.266 (включая 0.182). Это сравнивает с 0.700 секунд при использовании Chrome так что не понимаю, почему вы говорите «общее время похоже», когда мне это явно не?

    Наконец, я не понимаю вашего последующего ответа. Мне кажется, что вы сделали запрос, предположительно, после недавнего другого запроса, поскольку это пропустило весь этап сетевого подключения (включая любую серую остановку, синий поиск DNS, оранжевое начальное соединение и фиолетовое соединение https). Так конечно это быстрее. Но это не сравнение like for like с вашим первым скриншотом в вашем вопросе и не решает ваш вопрос.

    But yes you absolutely should be using keep-alives (they are on by default in most web server so usually takes extra efforts to turn them off) and https resumption techniques (not on by default unless you explicitly add this to your https config) to benefit any additional requests sent shortly after the first. Но это не принесет пользы первому подключению сессии.