Apache 100% CPU для простого PHP API
У меня есть новая установка сервера CentOS 6.4 64bit на виртуальной машине с 2 процессорами и 8 ГБ оперативной памяти.
На сервере ничего не установлено, кроме apache и php. На сервере размещен простой веб-API, который записывает данные в очередь RabbitMQ на другом сервере.
Я запускаю 10 экземпляров простого скрипта, который выполняет вызов curl для этого веб-сервера, который я зациклил 100 000 раз каждый.
Это приводит к тому, что веб-сервер использует 100% ЦП, но очень мало оперативной памяти (500 МБ). Я играл с конфигурацией Apache и даже установил его на 1000 maxclients, и я получил тот же результат.
Есть ли проблема с Apache, выполняющим большую работу даже с несколькими клиентами?
Спасибо
1 ответ
У вас есть 10 потоков, которые как можно быстрее отправляют миллион запросов от локальной системы (отсутствие задержки в сети не снижает скорость их попадания на сервер). Я не уверен, как это составило бы рабочую нагрузку только нескольких пользователей? Может быть, несколько пользователей прямо рядом с сервером, у которых есть что-то тяжелое на F5.
Вы столкнетесь с узким местом на том или ином ресурсе - в данном случае это процессор, просто из-за выполнения кода PHP. Как бы ни была проста страница, как только она заканчивает один рендер, она должна начать следующий.
Это не должно быть проблемой производительности само по себе; вы должны смотреть на такие вещи, как "сколько времени занимает рендеринг каждой страницы под нагрузкой" или "один ли запрос требует больше ресурсов, чем ожидалось". Этот тест на самом деле не дает никаких указаний на это. Взгляни на ab
- он покажет вам, какую производительность вы на самом деле получаете, одновременно подталкивая свой сервер к своему пределу.