Привет, у меня есть сервер Apache 2.2 со скриптами php (magento).
в обычное время страница php отображается за 1-2 секунды, что нормально.
Иногда при большом трафике или грубых ботах-пауках все Apache-Slots блокируются.
Одиночные запросы выполняются очень медленно и используют все больше и больше памяти, пока mysql не вызовет oom-killer, который убьет моего нуждающегося tomcat.
Сначала попробовал mod_evasive. Но если я настрою слишком строго, я не смогу быстро просматривать, если я настрою слишком свободно, запросы могут поступать быстрее, чем они могут быть обработаны.
Проблема в файлах php. Другие ресурсы, такие как изображения и т. Д., Не будут мешать слотам.
Во-вторых, я попытался ограничить его, уменьшив MaxClients. Но теперь один клиент может перекрыть все слоты.
Любая идея, как ограничить максимальное количество подключений для каждого клиента или лучше максимальное количество сценариев simultan php на ip ...
Как настроен другой клиент Apache, чтобы избежать большего количества запросов, чем они могут обработать, не отдавая предпочтение ни одному клиенту?
Разместите свой сайт за CDN с извлечением источника (Cloudflare приходит на ум как один вариант, есть и другие.)
в обычное время страница php отображается за 1-2 секунды, что нормально.
Нет, это не так.
Оптимизируйте свой код, чтобы он не занимал до два секунд для создания страницы.
Затем кеш все вещи.
Если вы еще этого не сделали, перенесите свой сервер базы данных на отдельный сервер, дайте ему метрическую нагрузку памяти и сверхбыстрые диски, а затем кешируйте свои таблицы. Magento - шлюха, когда дело доходит до присоединений и так далее, поэтому вам понадобится, чтобы ваш сервер базы данных был очень быстрым.
Таким образом, когда пользователь просматривает ваш сайт, контент будет извлечен из кеша. где-то и не нужно создавать каждый время.
Я взял на себя смелость запустить Yslow против вашего сайта. Вот краткое изложение результатов (хотя вам следует сделать это самостоятельно ..)
Total YSlow Grade D. Я начинаю задумываться, не являются ли ваши проблемы полностью серверными, но можно ли с ними чертовски хорошо поиграть и повысить ваш рейтинг YSlow. Потому что в этом случае а) ваш сервер Apache обслуживает меньше трафика. б) Он быстрее загружается, поэтому ваши посетители не блокируют процесс Apache надолго.
как правило, если magento работает медленно или то и дело убивает ваш сервер, ваш сервер будет работать лучше с большей мощностью оперативной памяти / процессора. вы можете настроить свой сервер для бесперебойной работы Magento, но это займет а) некоторое время и б) необходимые (на стороне сервера) ресурсы.
сколько db-tuning вы сделали? magento - это PITA, но его можно настроить на скорость при наличии достаточного количества оперативной памяти.
используйте такой инструмент, как mysql_tuner или праймер для настройки mysql чтобы настроить свой db.
и используйте как можно больше кеша. не помню, поддерживается ли APC; memcache лучше.
вы также должны следить за IOWAIT, который является намеком на очень плохую производительность HD, которая может иметь разные причины.
РЕДАКТИРОВАТЬ:
Как настроен другой клиент Apache, чтобы избежать большего количества запросов, чем они могут обработать, не отдавая предпочтение ни одному клиенту? / Я хочу знать, как другие апачи справляются с ситуацией, когда они получают больше запросов, чем они могут обработать
обычно вы масштабируете настройку в зависимости от ожидаемого трафика. Если ваш сервер выходит из строя, когда его атакуют пауки и краулеры, либо у вас очень плохо работают скрипты, либо ваш сервер слишком мал.
когда я ожидаю 1000 пользователей на моем сервере, я использую сервер, который может обрабатывать 5000 клиентов (и я отслеживаю error.log для достижения max_clients)
ограничение скорости возможно, но вы получите тот же опыт, что и с mod_evasive. это действительно помогает, как DDOS, но НЕ, если вам нужно настроить вашу установку.