Как найти причину падения производительности приложения (apache, php, mysql)?
Плохо оптимизированная работа с бд и плохая структура бд приводит к таким результатам. Начинать надо с самого приложения и постепенно оптимизировать код так, чтоб за раз выполнялся один запрос на выборку данных и один на их обновление. Если запросов несколько сотен, то группировать по сотне и отправлять (или по тысячи, проверять эмпирическим путем).
Судя по описанным симптомам, приложение является виновником и похоже, что СУБД в данном случае подолгу держит соединения открытыми. В результате веб-сервер вынужден держать сообщение с клиентом пока не получит ответ от приложения. В СУБД возможно отсутствуют необходимые индексы в таблицах, из-за чего она выполняет больше работы.
Без мониторинга приложения не будет полной картины. Первым делом нужно интегрировать NewRelic или аналог. Тогда будет ясно какие запросы дорогие на наглядных графиках и какие части нужно оптимизировать или вовсе переделывать.
Только тогда принимать решение о разнесении СУБД и веб-сервера с веб-приложением.