Ваши 15 секунд, хотелось бы видеть с разбивкой из чего они складываются.
Запросы к СУБД , из них сколько составляют ?
Количество запросов к базе нужных для генерации страницы ?
Для начала проверьте, что Вы не забыли индексы.
Читаем по ссылке как анализировать оптимальность запросов
https://habr.com/post/211022/
Дальше задумываемся, что не так . Я например видел проект, у которого для генерации главной было 2000 запросов. Ошибка была в том, что авторы вынимали 15 новостей так.
Найти 15 последних ид. Вызвать 15 раз конструктор новости. В конструкторе сделать запрос к базе по
переданному ид.
Вы ничего не написали про версию mysql и engine таблиц. Стоит проверить my.cnf на оптимальность значений.
Возможно ли использовать Query Cache ?
Напишите подробнее как проект распределен по серверам.
Что? где? Конфигурация сервере (Процессор, ядра, частота ; ОЗУ , объем, тип; HDD / SSD, объем / скорость на чтение/ запись)
Подробнее про СУБД. Сколько суммарный объем, таблиц, записей по таблицам.
Если СУБД уже на нескольких серверах, то тип репликации.