Если вы ищете быстрое, но грязное решение, вы можете использовать этот lib Винсент Ми.
Учебник способ сделать его должен был бы отождествить узкие места с реальными эмпирическими данными.
Действительно ли это - база данных, апач, сеть, CPU, память, io? Вам нужно больше поршня, sharding (+), DiskIO, сетевая нагрузка NFS, CPU для того, чтобы сделать полные сканирования таблицы?
То, когда Вы узнаете, где проблема - Вы, могло бы столкнуться с проблемой, что недостаточно для масштабирования инфраструктуры из-за пути код работает, и Вы заканчиваете с потребностью или только к создаете больше экземпляров Вас текущая установка или делаете код отличающимся.
Необходимо смочь определить тестовые улучшения и узкие места.
Для идентификации узких мест необходимо использовать инструменты создания отчетов системы. Некоторые примеры:
Используйте эти инструменты для identifyy самые медленные/самые большие преступники и сконцентрируйтесь на них. Попробуйте улучшение и меру, чтобы видеть, улучшает ли она на самом деле производительность.
Это становится никогда конечным циклом по двум причинам: всегда существует что-то в сложной системе, которая может быть быстрее и когда Ваша система растет, различные функции начнут замедляться.
На основе описания Вашей системы моя первая догадка была бы диском io и сетью io на серверах NFS, затем я посмотрю на времена запроса MySQL. Я также проверил бы производительность сеансов совместной работы.
Я бы также порекомендовал в качестве первого шага с точки зрения масштабируемости разгрузить ваш контент в CDN, таком как Edgecast. Используйте два ваших текущих контент-сервера в качестве дополнительных веб-серверов.