1. Пересмотрите индексы, используются ли они в достаточном мере
2. Настройте лимиты открытых таблиц, join таблиц и буфер кеша
3. Пересмотрите лимиты в linux, за частую дефолта может быть мало
4. Уйдите от голого апача, или на чистый nginx или на связку nginx прокси,
5. Настройте кеш статики, не забудьте настроить gzip в мерах разумного
6. Перейдите на http2 и php 7 (! не всегда и всем нужно и не всегда это безболезненно)
7. Если у товаров есть много отзывов, рассмотрите оптимизацию отзывов
8. Таблица oc_product постоянно лочтся, пересмотрите изменения логики updateViewed
9. В запросах получения всех товаров getProducts использует только нужные таблицы, остальные подключайте по факту использования в сортировке
10. Перенесите временные файлы sql в ОЗУ если это позволяет объем ОЗУ
11. Не забывайте, много каши типа стикеров, доп фото добавляю нагрузки для каждого товара это + 1 + 2 запроса, делайте выборку правильно, вообще проверяйте что у вас с запросами, одно из самых узких мест это база
12. MySql 8 скорее старых версий
13. Используйте кешер для opencart
14. Прирост в ~10% могут дать ssd диски типа nvme
15. Используйте проверенные VDS
16. При большой географии Используйте проксировшики типа cloudflare (в РФ много ip в бане, будьте осторожны), они кешируют статику, помогают снизить нагрузку на сервер