VPS & Dedicated Hosting: Site Performance Essentials & Tips
Before you start, measure its current speed at PageSpeedGrader; just the total number of seconds.
Write down the time.
- Tune your CMS site (WordPress, Joomla, etc.)
- Temporarily deactivate ALL Plugins/Modules/Addons.
- Retime your site at PageSpeedGrader
- Write it down.
- Install a Plugin/Module/Addon that does "caching": -- Examples: on WordPress, there's W3 Total Cache or Quick Cache.br> W3TC is my favorite. (It's so good that IF I find my site has a conflicting Plugin that doesn't work well with W3TC that I go look for a replacement Plugin; all of the well-programmed Plugins work perfectly with W3TC in my experience.)
- Reactivate one of the other plugins/modules. Retime it with PageSpeedGrader and write it down.
- Disable that one plugin/module and then enable the next one that you were using. Retime it with PageSpeedGrader and write it down.
- Keep on doing that. You'll usually find one that takes significantly more time than the others. In rare cases, it's a combination of two. Then find a replacement plugin/module that isn't so resource-intensive.
- On WordPress, do the same series of time measurements with any Widgets.
- PHP FastCGI(fcgi) Handler:
- Login to your WHM(https://server.YOURDOMAIN:2087)
- Go to "Configure PHP & Suexec" (there's a search box at the top left of WHM)
- Then change the "Handler" to "fcgi" and click the button to submit.
- Use a CDN (Content Delivery Network)!
Cloudflare is our favorite @ https://www.cloudflare.com/sign-up. It's free for http:// sites.
NOTE: if you use https:// anywhere on the website, you have to buy a paid version of CF.
- Then after it's turned on, time it at PageSpeedGrader.
Please understand that the recommendations below are outside the scope of our support. If you have further questions on them, you'll need to do research online; We can not help.
What we are doing is pointing you in the right direction by giving you the many pieces of information that we have found to be helpful.
- Use a PHP cache module such as Xcache or eAccelerator:
You'll want to research them before trying them:
Please note that we do not provide technical support for either of these.
Try this at a time when you can most afford for your website to be down, just in case there's a problem.
- WHM => search for EasyApache and click on that.
- Wait for that to load.
- At the bottom of the Step 1 page, click "Start customizing based on profile."
- On Steps 2 and 3, click "Next Step." You don't have to do anything else other than click "Next Step" on each.
- On Step 4, Short Options => check the checkbox for the one that you want -- for example, "Xcache for PHP" => scroll down, click Save & Build.
This process can take 30 minutes or more to run!
Use only 1 at a time. A time which one is faster for you. If it breaks your site, then just go back to WHM => EasyApache => and rebuild without it -- uncheck it, and then rebuild it.
- After it's turned on, time it at PageSpeedGrader.
- Tune the MySQL database server settings in /etc/my.cnf
You can edit this file via SFTP using any SFTP program, like Filezilla (username root and port 22)
Some places to learn about my.cnf optimization are:
- cPanel Forums
For example, many have had success with the Mysqltuner script mentioned in http://forums.cpanel.net/f189/mysql-optimization-suggestions-please-304542.html
- MySQL Forums
- Database Administrators Stack Exchange
- There are also sample my.cnf's in /usr/share/mysql that you can try swapping in to /etc/my.cnf and then restart your MySQL server. (WHM => Restart Services => SQL Server (MySQL)
- cPanel Forums
- Time your site again at PageSpeedGrader.
- Tune the Apache webserver.
- One idea is using ApacheBuddy
- Try the various MPM modules listed in Easy Apache => Exhaustive Options. There are "More Info" links next to each module.
- Load test your site using Siege or ab - Apache HTTP server benchmarking tool. Load testing will help you discover how many connections you can handle.
- Time it again.
- Buy additional RAM or CPU cores.
P.S. How do you check what happened in the past?
Check the website and server logs:
The last log can be downloaded with an SFTP program, like Filezilla, using the username of root and port 22.
Also, the `sar` shell command is good for history.
This command can be run via SSH from your main cPanel username or as root.
Example: sar -q for today and sar -q /var/log/sa/sa24 if you want to see the 24th day of the month. Put in whatever number is yesterday if you want to look at yesterday.
sar -r is also good for looking at RAM usage history.
P.P.S. Search what others have done
You can see what others are doing to optimize their servers at https://forums.cpanel.net/tags/optimization/
http://forums.cpanel.net/f34/troubleshooting-high-server-loads-linux-servers-319352.html is only one of many examples found on the Optimization forum.)