2016-04-04 4 views
1

У меня есть базовый (Small) уровень Azure Web App, размещенный в Западной Европе с базовой базой данных SQL в том же регионе. Always On включен. Обратите внимание, что целевая аудитория моего сайта находится в Европе.Azure веб-приложение медленное время отклика сервера

Обратите внимание, что сайт CodeIgniter основан и работает на php 5.6.

Страница загружается очень медленно, хотя в локальной среде все быстро. После запуска PageSpeed Insights на моем сайте я получаю следующую оценку:

Сокращение времени отклика сервера В нашем тесте, ваш сервер ответил на 1,7 секунды. Существует множество факторов, которые могут замедлить время ответа сервера. Ознакомьтесь с нашими рекомендациями, чтобы узнать, как вы можете отслеживать и измерять, где ваш сервер тратит больше всего времени.

При осмотре места из developer tools я получаю такую ​​же картину: enter image description here

Как вы можете видеть, что первоначальный ответ очень плохо. В чем может быть проблема?

UPDATE/РЕШЕНИЕ

Принимая совет Gary Liu - MSFT-х от комментариев, а именно позволяет pconnect в database.php время загрузки страницы, пошел вниз к 0.23 секунд, что является улучшение ~ 8x ,

+0

Это из-за вашей базы данных SQL. Базовая база данных SQL довольно медленная. Вы можете либо масштабировать базу данных SQL до стандарта, либо использовать Redis Cache, если ваше приложение относительно статично. –

+0

Я думаю, что не правильно выводить выводы без лишних фактов – TheGameiswar

+0

После обновления БД до Стандарта задержка снизилась до 1,4. Это очень тонкое изменение, учитывая, что моя латентность для [центров Западной Европы] (http://www.azurespeed.com/) составляет ~ 100 мс. Как измерить задержку между веб-приложением и db? – Pio

ответ

0

В CI framework, если вы используете prod-приложение, мы можем установить pconnect в true в config/database.php, чтобы использовать постоянное соединение с базой данных. Который может уменьшить задержку при первоначальном подключении.

Кстати, если вы используете тестовое или dev-приложение, нам нужно тщательно изучить этот параметр, потому что это может вызвать несколько неожиданных проблем. Вы можете обратиться к ответу Advantages/Disadvantages of pconnect option in CodeIgniter, чтобы получить дополнительную информацию.

2

Я обнаружил, что Entity Framework является виновником длительных начальных (холодного запуска) ответов. Отключение IIS от тайм-аута не помогло, я думаю, что должен быть какой-то EF-пул \ тайм-аут памяти, который не рекламируется.

Вы можете отключить некоторые проверки EF для управления версиями DB и попытаться использовать предварительно скомпилированное представление, которое поможет немного. Я все еще очень недоволен временем запуска EF при работе в Azure, подключающемся к предварительной DB. Время запуска на предварительном этапе составляет около 1 секунды, но ничто из того, что я сделал, не может получить мое облако в течение времени запуска до 10-12 секунд. Я пришел к выводу, что на предпродажу много накладных расходов на сеть, и я подозреваю, что использование Azure SQL также создает много сетевых накладных расходов, так как оно открыто для общественности.

+0

Хорошо, но код находится в php 5.6. Я обновлю вопрос и теги. – Pio

Смежные вопросы