при хорошей нагрузке даже без огромных запросов все будет тормозить.
Раз 60% съедает постгрес, значит стоит для начала разобраться с именно с ним.
- Выявить медленные запросы и провести их оптимизацию.
- создать и расставить в запросах индексы.
- уменьшить количество запросов, (особенно вставку и обновление), по возможности прикрутить кеширование
- прикрутить таймер исполнения к каждой странице, и результат складывать в лог. так можно выявить разделы сайта которые больше всех выполняются. далее можно также уже сами тормозные скрипты исследовать.
- xdebug к php поможет более детально изучить состояние переменных и памяти при дебаге
- ну и конечно код надо просмотреть. может чтото внутри какое безобразие происходит
готовых автоматизированных решений для анализа производительности не подскажу, к сожалению.
к сожалению код не мой, в нем будет трудно разобраться.. буду ждать новый сервер и готовить с нуля новую версию сайта. С кешированием, акселерацией, сжатием и оптимизированными запросами. Что бы всё как у людей :)
Если надо узнать, какие запросы в Постгрес тормозят - поставьте pgfouine.
Еще, какая версия постгрес, есть ли там и включен ли автовакуум? Если нет, делается ли периодически VACUUM?
У меня все проблемы решились при переезде на восьмую версию PostgreSQL.
возможно проблема действительно в плохо спроектированной базе - нет индексов, ключи текстовые и тд... На самом деле очень тяжело угадывать - задача из области "машина плохо едет". Для пхп решений самым действенным будет написать кеширование сайта.
"увидеть" чем занимается postgres - вполне возможно. Это уже к примеру: http://habrahabr.ru/blog/postgresql/2502…
дальше - создать идексы под запросы, если не сильно углубляться; потюнить сам postgres.
ППРВСН