В настоящее время я использую стек LAMP (поверх Centos 6.5) для наших сайтов и хочу попробовать отделить mySQL от «веб-сервера».
До сих пор я использовал VPS от DigitalOcean с четырехъядерным процессором и 8 ГБ оперативной памяти.
Вчера я создал новый DigitalOcean VPS для единой промежуточной среды (на данный момент) со следующими характеристиками и утилитами:
min/avg/max/mdev = 0.352/0.481/0.662/0.073 ms
bind-address=X.X.X.X
(внутренний IP-адрес частной сети)На веб-сервере работает сайт Drupal, на котором установлены APCu, opCACHE и memcached.
При проверке времени загрузки с помощью Chrome кажется, что сайт теперь загружается медленнее примерно на 0,5 - 1,5 секунды. К сожалению, NewRelic подтверждает мою правоту (см. Приложенный снимок экрана)
Поскольку я впервые настраиваю удаленный сервер mySQL, мне интересно, не пропустил ли я это? какие-либо конфигурации или настройки, которые могут улучшить производительность?
Несколько вещей, которые я порекомендую:
Убедитесь, что веб-сайт использует кеширование Memcached / APC / opcode.
Я бы порекомендовал Memcached для кеширования запросов к БД. Сделайте несколько настроек конфигурации Mysql, используя mysqltuner.pl
Оптимизация конфигурации memcached apc
Расположение файла конфигурации Memcached в ОС на базе Debian / Ubuntu:
/etc/memcached.conf
Файл конфигурации Memcached в ОС на базе Centos / RHEL:
/ и т.д. / sysconfig / memcached
Конфигурацию apc можно вставить в php.ini.
Выполнение этих шагов определенно должно повысить производительность.
И используйте NewRelic APM, чтобы получать данные о том, на что тратится время.
Если сеть является проблемой, я думаю, вы ничего не можете с этим поделать.
Дай мне знать.
Спасибо,
Шахриар
Я не уверен, почему вы удивитесь, ведь вашему серверу MySQL назначено меньше оперативной памяти, а размещение его на другом компьютере увеличивает нагрузку на сетевой интерфейс.
Вам следует контролировать свою сетевую активность, чтобы увидеть, не вызывает ли она каких-либо узких мест.
В зависимости от ваших SQL-запросов и PHP-скриптов, возможно, есть способы лучше оптимизировать эти задачи с точки зрения производительности запросов, а также улучшить результаты, отправляемые обратно в PHP, чтобы уменьшить нагрузку на сеть.
Мне удалось решить проблему, и я думаю, что пройденный мной путь может быть полезен другим.
ping
, mtr
и traceroute
чтобы узнать, связана ли проблема с задержкойtop
(или htop
) и free -m
SHOW PROFILE
iptraf
и наши сторонние службы мониторинга), но есть и другие варианты, предложенные @Julie Pelletier Дополнительный прирост производительности при использовании удаленного сервера mySQL
Используйте кеширование memcached, APCu и Opcode (хотя все они уже были установлены в нашем случае - они меняют правила игры ..)
И последнее, но не менее важное: используйте SSH-туннель вместо прямого подключения к серверу mySQL (похоже, это экономит около 200 мс на общем времени загрузки страницы)
Надеюсь, что чтение этого ответа сэкономит вам от 0,5 до 1,5 секунд :)