MAMP работает очень медленно с подключением к внешней базе данных

Я имею дело с очень медленной загрузкой страниц. Я использовал вкладку «Сеть» в консоли Chrome, чтобы получить эту информацию (но она работает медленно во всех браузерах).

Я тщательно исследовал эту проблему, но теперь полностью озадачен. Я пробовал ответ Блоуски на MAMP: страницы перезагружаются очень медленно (редактирование моего hosts файла), но мне не удалось заставить страницу загружаться быстрее.

Я использую OS X 10.8.5, CodeIgniter 2.1.3 и подключаюсь к удаленной базе данных MySQL (которая находится на том же сервере, что и действующий веб-сервер). Не уверен, связано ли это с долгим ожиданием. Ниже приведены тесты скорости загрузки той же страницы:

localhost
Время ожидания 13,49 секунды.

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

Веб-сервер
Время ожидания составляет 222 миллисекунды.

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

Что я могу сделать, чтобы исправить эту проблему?

Обновление: я сузил проблему до базы данных MySQL (которая расположена на удаленном сервере, отдельно от того места, где установлен PHP (MAMP)). Есть ли какие-то настройки, которые мне нужно изменить, чтобы исправить это ужасное время загрузки? Я также подключаюсь к базе данных, используя IP-адрес, а не доменное имя, поэтому я не считаю, что это проблема DNS с сервером, на котором установлен MySQL.


person doitlikejustin    schedule 04.10.2013    source источник
comment
Что значит 10 минут для связи? Находятся ли машины PHP и MySQL в одном центре обработки данных?   -  person AllInOne    schedule 04.10.2013
comment
Я просто имею ввиду, что сервер MySQL рядом. Это не на другом конце страны. PHP и MySQL находятся в одном центре обработки данных только на веб-сервере, а не на локальном хосте.   -  person doitlikejustin    schedule 04.10.2013
comment
Для целей этого вопроса PHP работает на вашем локальном компьютере, подключаясь к базе данных MySQL в удаленном месте - правильно? Какая связь между этими приложениями? Вот почему вы бежите медленно. Для каждого запроса страницы могут быть десятки последовательных циклов обмена, когда данные перемещаются между PHP и MySQL. Решением было бы запустить локальную копию MySQL или как-то уменьшить перегрузку сети между уровнями данных и приложений.   -  person AllInOne    schedule 04.10.2013
comment
Ты прав. Я понимаю ваше предложение, но что для меня не имеет смысла, так это почему это происходит только локально? У меня есть веб-сайт, на котором запущена база данных MySQL на веб-сервере, и он работает нормально и делал это много раз, прежде чем запускать PHP / MySQL на разных серверах. Есть ли что-то особенное в локальном PHP?   -  person doitlikejustin    schedule 05.10.2013
comment
Вы когда-нибудь находили решение?   -  person Mike    schedule 12.06.2015
comment
Нет, я не. В итоге я использовал другой компьютер   -  person doitlikejustin    schedule 13.06.2015


Ответы (3)


В качестве общего решения попробуйте использовать профилировщик - он предназначен для диагностики проблем с производительностью.

по этой ссылке есть довольно хорошее руководство - http://geek.michaelgrace.org/2011/08/xdebug-cachegrind-and-mamp-on-mac-osx/

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

person xiankai    schedule 07.10.2013
comment
Это не ответило на мой вопрос, но я принимаю его, потому что это помогло мне найти источник проблемы (которая до сих пор не решена). Она сводится к долгому ожиданию подключений / запросов MySQL. - person doitlikejustin; 09.10.2013

Такое долгое отставание заставляет меня подозревать профилирование как виновника, тем более что оно только на localhost.

Проверьте свой php.ini, если xdebug включен (его можно найти в отдельном xdebug.ini), и если да, то если xdebug.profiler_enable имеет значение true / 1.

Это или, возможно, MAMP использует другой профилировщик.

person xiankai    schedule 05.10.2013
comment
Спасибо за ответ. Я попытался добавить его в свой основной php.ini и локальный php.ini, а также использовать ini_set, но мне не повезло с решением проблемы :( - person doitlikejustin; 05.10.2013
comment
Я не хотел устанавливать для него значение true (таким образом, включив его), я имел в виду, что если он присутствует, это может быть причиной задержки. Возможно, вы могли бы вместо этого попробовать установить для него значение false? - person xiankai; 05.10.2013
comment
О, я вижу. Ну, по умолчанию он был выключен, я вручную установил его на false, но все еще не работает. - person doitlikejustin; 06.10.2013
comment
Я обновил вопрос. Выяснилось, что это мое подключение к удаленной базе данных MySQL ... не уверен, есть ли у вас другие идеи. - person doitlikejustin; 07.10.2013

Может быть, сервер, на котором запущен демон MySQL, настроен на обратный поиск в DNS? Поскольку машина для разработки является вашим собственным компьютером на стандартной линии Интернет-провайдера, это может вызвать серьезную задержку для каждого запроса, так как обратный поиск DNS должен каждый раз отключаться по тайм-ауту.

person arnekolja    schedule 17.11.2013
comment
Могу ли я изменить конфигурацию, чтобы этого не делать? - person doitlikejustin; 18.11.2013
comment
Это параметр, который должен установить администратор вашего сервера MySQL. Однако вам может не повезти с общим и / или управляемым хостингом. Здесь такая же ситуация. - person arnekolja; 19.11.2013
comment
У меня есть root-доступ и доступ администратора MySQL - person doitlikejustin; 19.11.2013
comment
Чтобы отключить обратный поиск DNS в MySQL: отредактируйте файл конфигурации mysql (my.ini my.cnf или что-то еще) в разделе [mysqld] add # Пропустить обратный поиск DNS клиентов skip-name-resolve - person ChrisH; 08.01.2017