php-fpm с настроенным перезапуском воркеров, например по количеству реквестов - 1000 будет норм. + Запись в логи slow реквестов, тоже нужно настроить - указать тайм-аут выполнения. Ну и для кучи автоскейлинг воркеров, чтобы в простое было штук 15, а при нагрузке можно и побольше, например 50.
На перспективу,
Когда поймёте, что сервер закончился, можно вставить следующий, это значит просто запустить ещё одну впс с php-fpm.
Если есть аплоады, то нужно решать, как их сделать общими, если запись не очень активная, glusterfs может подойти или nfs. Оба решения так себе, в идеале аплоады лить в cdn.
И да базу расширить между нодами нужно будет :)