Товарищи знатоки. Прошу помощи, чтобы разобраться и понять, где узкое место на моем сервере. Есть несколько разных серверов. Туда залит проект на php: кое-какая api. При работе 1 человека с апи - все ок, когда их становиться много - сразу начинает лагать и респонса клиент может и не дождаться.
Вот конфигурация одного из серверов: это бесплатный инстантс амазона. ОС - какая-то версия амазоновская, наверно основанная на убунту или дебиан. Процессор с 1 ядром, 600 мб оперативной памяти. Понимаю, что это понты, но сервера с более мощной конфигурацией испытывают такие же проблемы, хотя на мой взгляд работать они должны при бо'льших нагрузках. На сервере используется php 5.4, mysql 5, nginx. Работы с бд почти нет, тк раз 2 часа все данные апи кешируются с помощью memcached и всегда отдаются из кеша.
Так вот я запускаю тест загрузки от сайта loader.io, который имитирует 30 клиентов в минуту, каждый клиент делает запросы на 6 разных енпоинтов апи. Каждый ендпоинт в общем отдает закешированные данные + кое-какие мелкие действия в бд типа обновить дату доступа. При таком конфиге и 30 клиентов в минуту тест крашится из-за большого кол-ва таймаутов. Я не могу понять, в чем беда. Загрузка процессора - 100 почти всегда. Занимает почти все - пхп. Но почему он так грузит проц, если там работы-то на пару секунд...
Может кто описать кратко инструкцию по определению узкого места на сервере: в nginx что-то(может настрока неверная), или я как-то пхп неверно конфигурю, или с бд что-то не так. В настройке я полный 0, хотелось бы услышать советов людей, которые имеют опыт. Спасибо!
П.С. вот один из графиков, на нем видно, как сервере исправно обрабатывает запросы, но потом резко начинает педалить и загибается:
upd: результаты профайлера