Назад | Перейти на главную страницу

Могу ли я что-нибудь сделать, чтобы уменьшить время ожидания моих статических HTTP-запросов (в сетевой панели Chrome)?

Я бегаю amazon aws ec2 микро экземпляр на Ubuntu 14.04 с участием apache 2.4.9. Причина наличия этого экземпляра - просто протестировать и исправить некоторые ошибки перед сворачиванием проекта. В настоящее время очень мало людей (<10) используют проект нерегулярно (<20 раз в день). В моем проекте я использую минификацию, поэтому у меня там только немного статического контента: например, 1 файл css и может быть 3 файла js. Они не очень большие, а сумма всех файлов меньше 300 Кб.

Рассматривая диаграмму водопада после загрузки моего проекта,

Я заметил, что много времени тратится на фаза ожидания (если уберу, то, скорее всего, сайт загрузится более чем в 2 раза быстрее). Также я знал, чему соответствует каждая из этих фаз (я даже ответил очень актуальным вопрос здесь), Не знаю, что именно можно сделать, чтобы уменьшить время ожидания. В моем случае добавляется большое время ожидания для статических ресурсов, таких как css / js / img, поэтому это не имеет ничего общего с написанием более эффективного кода.

Я также нашел еще один очень актуальный вопрос здесь (это на самом деле тот же вопрос, что и у меня) и попытался последовать совету, переключив HostnameLookups Off но это вообще ничего не изменило.

у меня нет /etc/httpd/conf/httpd.conf, поэтому я добавил его в /etc/apache2/sites-available/000-default.conf. Также у меня нет ничего похожего LogFormat в моем конфиге, поэтому я пропустил эту часть.

Что я могу сделать, чтобы сократить это время? Когда я просматриваю ту же диаграмму, собранную с места нахождения сервера, я вижу небольшое улучшение времени ожидания, но ситуация остается той же.

Я понимаю, что могу перейти на лучший сервер с лучшим HDD / RAM / CPU, но это очевидно. Зная, что существует так много параметров конфигурации для apache, я думаю, что там есть что-то для настройки.

P.S. благодаря JakeGould я заглянул в apache2.conf и модифицировал его (не 000-default.conf Как я упоминал ранее). Я также модифицировал KeepAliveTimeOut до 3 и MaxKeepAliveRequests до 20, что больше подходит для моего сайта.

Согласно Документация Chrome, время ожидания - «Время ожидания первоначального ответа». - но вы это уже знали.

Кажется, что нет никаких дополнительных объяснений, но согласно временной шкале ниже, стадия «ожидания» логически будет выглядеть либо задержкой в ​​сети, либо обработкой веб-сервера, то есть временем между отправкой запроса на ресурс и получением первый байт ответа.

Вы сказали, что используете Amazon EC2, но не сказали, какой тип инстанса используете. Инстансы Amazon абсолютно не одинаковы, и некоторые из них имеют более низкий приоритет хранилища, чем другие, также как для ЦП и сетевого трафика, поэтому вам будет полезно проанализировать свои узкие места - ваш диск не должен быть перегружен, чтобы он стал узким местом . Вы можете попробовать перейти на инстанс с поддержкой SSD, например m3.medium или m3.large.

Чтобы измерить свой iowait, используйте iostat команда (содержащаяся в sysstat пакет на Ubuntu) с подходящим периодом времени, пока вы делаете свои тестовые запросы.

Еще одним спорным ресурсом может быть RAM. Linux обычно неплохо умеет кэшировать файлы в памяти, но если у вас недостаточно «свободной» ОЗУ, Apache будет записывать все файлы на диск.

Это проблема с жестким диском. Скорее всего, диск, на котором вы работаете, находится под большой нагрузкой, и требуется время, чтобы получить данные с диска.

Я не думаю, что есть способ контролировать это на Amazon. Вы можете попытаться сохранить наиболее важный контент в кеше, возможно, создав небольшой виртуальный диск с наиболее важным статическим содержимым.

Но лучший совет при любых проблемах с Amazon EC2 - это выйти на хуй и использовать свой собственный выделенный сервер. Это плохого качества (вспомните аварии - облачно, амазонка), небезопасно, доступно ЦРУ + АНБ и очень дорого.