Как определить узкое на сервере?
Раскидайте по коду таймеры, далее по вкусу - можно их писать куда нибудь, можно просто паралельно с тестом рукам открыть код и посмотреть результаты.
По крайней мере будет понятно где тормозит. Сейчас явных для решения явно не достаточно.
Гипотетически (версия из головы) может например быть какой то кривой кеш, который захлебывается, постоянно перегенерится - вот и загрузка 100%upd еще гипотетическая версия - у вас например есть какие то тяжелые транзакции которые мешают разным потокам скрипта.
www.xdebug.org/docs/profiler - использовать только для тестов, в продакшене стоит отключить.
Есть подозрения что у вас какая-то беда с ресолвингом DNS серверов с memcache и/или базой данных. Проверьте может?