Probably not wise to implement all recommendations made
by MySQLTuner as some could have deminishing returns.
Certainly not all at once. Take it slowly!
The key settings i see in what you've shared (text would have been better, IMHO):
max_connections > 151 ... 151 is default
Dropped connection could happen to student taking quiz.
251 cover it?
innodb_buffer_pool_size >- 1.7G
One wants the buffer pool size slightly higher than data.
Example from another server config/tuner run:
[OK] InnoDB buffer pool / data size: 3.0G/2.0G
and related to that
InnoDB buffer pool instances which should be 1 per Gig of pool.
In your server 2 which covers 1.7G.
Up higher in what tuner displays is important:
[OK] Maximum reached memory usage: 3.4G (21.58% of installed RAM)
[OK] Maximum possible memory usage: 4.4G (28.44% of installed RAM)
[OK] Overall possible memory usage with other process is compatible with memory available
One would want to put as much of the DB as possible in memory without adversely affecting server ... as suggested above.
Your numbers wouldn't be same as example above.
You cut off a biggy ... optimizing what is probably the largest table
that of mdl_logstore_standard_log ... the 'who done it'. Optimize that table!
DB server on same as Web server (where moodle code resides) is a balancing act.
Tip: when server being used ... ssh into it as root and run 'top' for a realtime look! Pay attention to SWAP space and what is using it.