У меня есть экземпляр m1.medium Amazon EC2, на котором запущен Apache и ведется блог Wordpress. В свою очередь, Wordpress работает с базой данных MySQL на другом экземпляре EC2. На сайте Wordpress настроен и работает W3 Total Cache, и большая часть статического контента на сайте обслуживается из CDN. На сайте регулярно проходит небольшой объем трафика, а затем иногда возникают огромные всплески трафика ... и когда эти всплески происходят (более ~ 150 человек заходят на сайт), сайт отключается. Я также могу сделать это каждый раз с помощью некоторых инструментов нагрузочного тестирования.
Вот «верх», когда главный сервер простаивает:
top - 23:21:23 up 103 days, 19:40, 3 users, load average: 0.91, 0.60, 0.62
Tasks: 93 total, 1 running, 92 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.9%sy, 0.0%ni, 99.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3844856k total, 1756268k used, 2088588k free, 150132k buffers
Swap: 0k total, 0k used, 0k free, 833740k cached
Однако, если я провожу несколько нагрузочных тестов для имитации доступа сотен пользователей к статическому графическому файлу (который, очевидно, не запускает Wordpress, PHP или базу данных), все в порядке: нагрузка на сервер остается низкой, графический файл обслуживается быстро, и т.п.
Мои настройки Apache (3,1 ГБ памяти на сервере / ~ 8100 КБ на экземпляр httpd = ~ 400 MaxClients):
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 400
MaxClients 400
MaxRequestsPerChild 0
Итак, судя по всему, проблема связана с тем, когда используются PHP или MySQL.
На сервере MySQL, что бы я ни делал, нагрузка остается практически нулевой, а журнал медленных запросов остается пустым ... так что я думаю, что там все в порядке. Вот мой «топ» для SQL-сервера:
top - 23:20:21 up 103 days, 19:12, 5 users, load average: 0.08, 0.03, 0.05
Tasks: 115 total, 1 running, 114 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3844856k total, 1076912k used, 2767944k free, 158412k buffers
Swap: 0k total, 0k used, 0k free, 638092k cached
Все это заставляет меня думать, что имеет место один из этих маловероятных сценариев:
Я чувствую, что проверил все, что можно, и все равно не повезло. Что еще я должен проверить? Что еще можно попробовать?
Мы обслуживаем большее количество пользователей в меньшем количестве на EC2 (и использовали тест apache до 1000 одновременных сеансов).
Хорошая новость в том, что вы можете воспроизвести это.
Вы можете многое проверить:
Поместите такой инструмент, как новая реликвия, на оба сервера (для начала используйте бесплатную версию, чтобы регистрировать историю ЦП / памяти). И это в любом случае хорошо для трендов.
Начните с связи между 2 серверами. Сделайте несколько передач файлов и проверьте скорость.
У нас была проблема с wp-cron.php, которая время от времени убивала сервер wordpress. Попробуйте отключить это, перемещая его в cron-вызов каждые несколько минут.
Сообщите о том, что вы нашли, и я могу предложить еще несколько идей.
«Лошадиная сила» m1.medium в данном случае равна одному процессору с нагрузкой 0,91, когда вы показываете вершину. Загрузка .91 означает, что «сейчас 91% работы одного процессора запрашивается процессами». Короче говоря, что-то, кажется, истощает ваш процессор, пока вы простаиваете.
Предполагая, что проблема в этом, я бы сократил количество услуг, которые потребляют ваш процессор. Если это не вариант на вашем основном сервере, я бы сделал ami вашей существующей машины, затем включил бы еще два хоста, тип экземпляра t1.micro, и удостоверился, что на нем работают только минимальные службы (в данном случае apache. ) Тогда круговой перебор DNS адреса вашего сайта. Это втрое увеличит емкость вашего серийного процессора, в то же время увеличивая базовый уровень процессора в 2 раза.