I can’t really give exact recommendations, but a few tips:
Take a look at https://matomo.org/docs/optimize-how-to/ and https://matomo.org/docs/requirements/ for a lot more.
I would recommend to disable browser archiving and only run a cronjob to generate all reports.
Also take a look at https://plugins.matomo.org/QueuedTracking it can help a lot especially with short peaks.
Normally every matomo.php request executes a bit of code that handles this and then writes it in the database.
With QueuedTracking instead the request is written as-is as fast as possible either in a separate table or in redis and then e.g. every X requests you can let Matomo handle all requests in the queue.
You can also handle the work of the queue as a php-cli task.
This should help if you have a lot of requests in a short amount of time, but afterwards time to catch up with the queue.