Bluehost Web Hosting Help
VPS or Dedicated - Site Performance Essentials + Tips
Before you start, measure it's 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.
- Re-time 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 1 of the other plugins/modules. Retime it with PageSpeedGrader and write it down.
- Disable that 1 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 give technical support on 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. 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 re-Build 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 web server.
- One idea is using ApacheBuddy
- Try the various MPM modules listed in Easy Apache => Exhaustive Options. There are "More Info" links next to each of 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 a 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 good also for looking at RAM usage history.
P.P.S. Search what others have done
You can see what other are doing to optimize their servers at http://forums.cpanel.net/optimization.html
http://forums.cpanel.net/f34/troubleshooting-high-server-loads-linux-servers-319352.html is only one of many examples found on the Optimization forum.)
Recommended Help Content
VPS Dedicated Installing SSL
To help with installing an SSL certificate for an account on a dedicated server through the WHM
CPU Performance Issues
What is CPU Protection
VPS or Dedicated Hosting - Installing Java
How to install Java in a dedicated server.
Related Help Content
VPS or Dedicated Hosting - Installing Git
This is a tutorial on how to install Git onto the server.
Error Code 500 on Dedicated and VPS Servers
This article will explain some common causes for 500 errors on Dedicated or V.P.S servers.
VPS or Dedicated Hosting - Using Multiple cPanel Accounts To Set Custom Nameservers
How to setup name servers for multiple cPanel accounts.
VPS or Dedicated Hosting - Install ClamAV
How to install ClamAV to help with virus protection.
VPS or Dedicated Hosting - Manage Login SSL Certificates
How to manage the SSL used for cPanel login through the WHM
VPS or Dedicated Hosting - Modify Exim Port (Mail Transfer Agent)
How to modify the Exim Port (Mail Transfer Agent) in the WHM
VPS or Dedicated Hosting - Assigning Dedicated IPs
How to assign a dedicated IP to a domain on a dedicated server.
SPF Records - VPS Dedicated
Sender Policy Framework records, or SPF records are a type of DNS record used to identify which mail servers should be allowed to send email from a certain domain name.