What’s more important for supporting concurrent users on an elearning site with dynamic content, CPUs or RAM?

In my experience, neither is as important as PHP Workers. If you’re on a good hosting platform (like FlyWheel/WPEngine or Kinsta) you can look to get a customized configuration for your account and request an increase in the number of PHP Workers.

A PHP Worker is what builds pages and handles back end requests – so concurrent users requesting page builds and backend processes, regardless of your CPU or RAM, if you have one PHP Worker, are all queuing up to run their process through that single Worker. Which if busy, means you’re getting a bottleneck.

Now if you increase the PHP Workers available, what you get is numerous shorter queues. Essentially they are processes executing simultaneously.

Now, if you couple that with more CPU or more RAM, then each of the processes finishes quicker and each of the queues cycles through the processes quicker as well.

Here’s a good write up on PHP Workers: https://www.nexcess.net/blog/what-are-php-workers/