When I set the MaxRequestWorkers to 20, all the Apache Child processes cannot be more then 20. But, that means if one users used all of the 20, the rest of the users are also not allowed to make more apache child process.
I want to set this up on a per user basis. If user John created 20 processes, and user jane only 5, she can still create up to 20.
How can I achieve this?
No, you can't define them depending on users, since users have no fitting in the layer MPM work.
Apache can define the amount of concurrent requests it can handle. If you define 20 maxrequestworkers and have a greedy "client" sending 20 concurrent requests, that's all you are going to get and the rest of the requests are going to queue behind.
But still, Apache HTTPD can be very performant, size it a bit over the total amount of concurrent requests you think you are going to receive. You can get a tip of the real amounts you get from mod_status when your server is on high load.
With MPM's like event it is not crazy to define 500 MaxRequestWorkers or even more dispersed on childprocesses with 100 threads each or so, depending on hardware.