Я бы лично сделал несколько вещей
1) Установите систему балансировки нагрузки / репликации базы данных
Это означает, что ваша служба может распространяться на несколько серверов. Не можете позволить себе иметь более одного сервера постоянно? Используйте Amazon E3 - это хорошо для размещения подобных вещей (включите еще несколько серверов, чтобы справиться с нагрузкой)
2) Код с некоторыми ограничениями «высокой нагрузки»
Например, если ваш поиск неэффективен - отключите его, когда нагрузка достигнет определенного уровня. «Извините, мы заняты, попробуйте позже для поиска»
3) Нагрузочный тест ... Используйте что-то вроде ApacheBench для стресс-тестирования ваших серверов.
4) Лично я считаю, что лучше отключить «Keep-Alive» Connections. Это может немного снизить общую производительность, но - это означает, что вместо того, чтобы что-то, где сайт работает хорошо для нескольких человек, а другие получают тайм-ауты, каждый получает несогласованный сервис, если он достигает этого уровня
Linux Format сделал хорошую статью на тему «Как пережить косую черту» ... которую я нашел полезной в прошлом. Это доступно онлайн как PDF