I have 3 virtual servers and running 3 websites on my server. one of the virtual servers I have easily set execution mode to FPM and set sub-processes number to 100 without any problem.
Sure. We fixed a problem in this area in the recent past, which may have broken it in other ways, I don’t know. (We were setting an absurdly high limit, by default, which was wrong.)
The number of processes is generally supposed to be one per computational unit, I think (so one per CPU core or thread or virtual core in a VM). Doubling that would be overkill, but harmless, tripling or more is counter-productive and will cause other kinds of resource starvation (I don’t understand any of this, as I have no familiarity with how concurrency is implemented in PHP-FPM, but I know experimentally that reducing the number from an absurd number to a reasonable number makes it go faster and behave more reliably).
Great. I’ve set all 3 websites to 20. even I’m having a hard time understanding these values. perhaps someone who is knowledgeable and using Virtualmin can give a little more explanation for better understanding.
20 is probably still higher than it needs to be, unless you have 20 CPU cores. But, we also probably shouldn’t limit it to just 20, since there are CPUs with more cores than that pretty widely available (AMD has 32 and 64 core Epyc CPUs). Though I think most Virtualmin users are not running that kind of hardware.
I changed the value to 4 in two of my virtual server. however, when I try to change the value to my last server, PHP-FPM restart failed and everything crashed.
The error in your post tells you how to look at recent entries in the journal (journalctl -xe), but you can also look at messages for specific units (journalctl -fu php7.3-fpm).
And, by “journal” I mean the systemd journal, which is basically a log. Not a Virtualmin thing, it’s how all systemd systems log systemd activity like starting and stopping services.