2015-09-07 4 views
0

У нас есть экземпляр ec2, который имеет в среднем около 10% использования. Иногда мы получаем всплески, которые составляют около 95% - при этом у нас есть предупреждение, которое срабатывает, чтобы мы могли проверить журнал. Я проверил журнал, и похоже, что сайт, принадлежащий другой компании, просканировал наш сайт несколько раз, вызвав высокий всплеск, который вызвал ошибку mysql для скрипта php, который больше не работает. Является ли это обычным явлением для сайта, чтобы выявить ваш сервер?AWS ec2 instance high CPU Usage

+0

Частоты запросов на обход, тип экземпляра, который вы используете, и вы просматриваете URL-адреса, которые запрашивают некоторую тяжелую обработку данных. Plz update – Bijendra

+0

Каждые пару дней - это запросы. В настоящее время я использую экземпляр ec2 micro и не подвергая URL. – Jolen

ответ

0

Конечно, возможно, что шинные сетевые запросы увеличат использование ЦП и если сетевая нагрузка достаточно тяжелая, она, безусловно, может вызвать всплеск на 100% CPU.

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

Чтобы убедиться, что этот шип сети вызвал этот всплеск CPU до 100%, используйте CloudWatch - это ваш друг. Откройте диаграммы использования NetworkIn и CPU Utility для вашего экземпляра и убедитесь, что вы смотрите статистику «Максимум». Сравните графики и наблюдайте, отражены ли спайки сети в пиках CPU.

Если вы получаете трафик от нежелательного источника, блокировать их IP-адрес с помощью сети ACLS (NACLS):
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html

Если вы регулярно испытывать высокий уровень трафика на этом случае, вы должны с учетом перехода на Авто Scaling. При автоматическом масштабировании вы можете иметь несколько узлов, обслуживающих ваш сайт через ELB. Веб-запрос отправляется на ваше доменное имя, которое захватывается ELB, а затем перенаправляется на узел в группе Auto Scaling. С помощью функции автоматического масштабирования вы можете использовать аварийные сигналы CloudWatch, чтобы позволить вашей инфраструктуре масштабироваться динамически. Например. Когда средняя загрузка процессора на моих серверах достигает 70%, запустите дополнительный сервер для распространения нагрузки.
http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/WhatIsAutoScaling.html

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elastic-load-balancing.html

Вот отличный учебник о том, как достичь этой архитектуры:
http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-register-lbs-with-asg.html

Но поставить простой ответ на ваш вопрос, да, это нормально для большого скачка в сети для перегрузки процессора вашего экземпляра.

1

Люди обычно сталкиваются с этой ситуацией, когда общедоступные URL-адреса сайта регистрируются в google/bing или любом другом боте, и бот приходит для сканирования каждого URL-адреса один раз в день или два, что приводит к высокому использованию центрального процессора в тот момент времени, и это нормально. Я также столкнулся с этим вопросом раньше. Если это из бота Google, вы можете удалить или отменить регистрацию оттуда, для других сайтов вам нужно будет найти любое пользовательское решение.

3
  • У вас может быть сервер haproxy, чтобы избежать нежелательных запросов, если в URL-адресах есть какой-либо шаблон. Продолжайте обновление с течением времени.
  • Всегда иметь страницу ошибок 404, когда URL-адрес не совпадает и не перенаправляется на домашнюю страницу, так как он уменьшает нагрузку на сервер. Это можно игнорировать, если ваша домашняя страница очень легкая и с небольшим количеством запросов данных.

Проверьте нагрузку на увеличение количества пользователей, и каждый новый запрос отслеживает, как увеличивается использование процессора.

Вы не можете полностью отказаться от нежелательного запроса, но, возможно, уменьшить его до некоторого уровня.

Кроме того, поведение микро-экземпляра, которое я наблюдал, достигает 100% или близко к нему. Требуется несколько секунд, чтобы вернуться, даже если дальнейшие запросы не сделаны. Micro экземпляры, возможно, не подходят для производства, если вы ожидаете нежелательного трафика в разы.

Что касается вашей ошибки, это может быть из-за отсутствия доступного RAM, а mysql перешел в состояние взаимоблокировки или что-то подобное. Далее я расскажу об этом позже.