Because, after i switch to CLI cronjob, my server loads increasing every minutes due run the job command
Abnormal CPU usage continuously.
Look at your DB CPU usage ... if your MySQL server is at 92.7% CPU, then every other component is going to be struggling to complete its tasks since they all have to wait until the DB responds to their queries.
Am I reading that right that you've got 45GB of virtual memory used by mysql (with 12GB reserved) - have you really allocated that much memory to your MySQL server? How big is your forum? How much RAM do you have in your server?
Your database server should be largely idling unless you have thousands of users online.
Have you tuned your MySQL server? This is a good place to start:
https://github.com/major/MySQLTuner-perl
I also note that each of your php-fpm threads is using 1.2G of RAM - what are you running on your server? My XenForo fpm processes typically run at around 500MB each.
Also - check how many outstanding Jobs you have using the
xf:show-jobs
CLI command - if you have hundreds of jobs in the queue then the server is going to work quite hard until they clear.
One of my sites regularly has 400-500 users online at a time and my MySQL server typically idles along at around 3 - 5% CPU usage.
If you really do have a huge forum - then there are going to be a LOT of jobs running. If you used the built in AJAX job runner - then your fpm processes will be taking the load of running those jobs. By using my CLI runner - you've got them running in a separate process which should hopefully use less RAM and decrease wait times on your fpm processes.
How much this really matters for site performance, I don't know - I've not tested it.
Do you have server diagnostics which show the length of your php-fpm queue or how many php-fpm slow requests you're getting. It would be interesting to see how they change with and without the CLI job runner. I use NGINX Amplify for tracking these things and for tuning my fpm processes (it's free for up to 5 servers).