Why does my site get throttled, or why did my account get suspended for performance?
Throttling means that our proprietary CPU Throttling System has automatically tied your account to its own dedicated core temporarily to keep your account from dominating too much CPU time. Throttling for less than 600 seconds in any given hour will not usually negatively affect your site's performance for visitors. In some extreme cases, our admins may suspend the account until the problem(s) is/are resolved or optimized.
Throttling or Suspensions are usually caused by:
Poorly coded Php scripts such as multiple nested loops, or infinite loops.
Themes, Addons, or Plugins (if you just added a new component to your script, you may want to remove it to see if that new component caused your site to suddenly perform slowly)
Queries that return inordinately large dataset results (eg: 100,000 records) in the Response object of a round trip to the server.
Queries that take too long to execute due to heavy aggregation commands like SUM, COUNT over very large datasets without proper indexing.
Queries that are doing complex unoptimized nested Joins.
Queries that execute large batch commands like INSERTS, UPDATES, OR DELETES - these types of sql calls are 10 times more expensive and resource intensive than the SELECT query command.
Any process that uses too much RAM, like a rogue cron job
Too many simultaneous connections like Downloads, FTP, IMAP, or PHP
How can you troubleshoot this?
Within your Free1host cPanel under the logs category you will find the "CPU THROTTLING" icon. This tool will show you exactly how many seconds your account has been throttled during the past 24 hours. This data is valuable when analyzed along with other logs such as MySQL Slow Queries.
The MySQL Slow Queries log can help determine which queries or scripts are unoptimized. Login into cPanel. Look for the section called "Files" and click the icon called "File Manager". Start in the "Home Directory", choose Show Hidden Files, and then click Go. Once in the File Manager, look on the right side for a folder called "tmp" and navigate into that folder. Once inside the tmp folder, find a folder called "mysql_slow_queries". Navigate inside that folder.
Look for the files with recent dates and right-click on one of those files and choose "Code Edit". This will show the log details. Look for the logs where the Query_time is over 2 seconds. Queries that take over 2 seconds to execute usually need to be re factored.
These logs are generated to help troubleshoot database programming queries that are not optimized. Locate the query and database causing the problem, then optimize the query or queries by re-writing the query, creating an appropriate Database Index, repairing any damaged databases, etc. If you are not familiar with database programming, you may need to seek help from your web developer/programmer.
***** WE STRONGLY RECOMMEND THAT YOU BACKUP YOUR DATABASES BEFORE WORKING ON THEM *****
What are some Simple Steps you can perform to try to fix your database issues?
You can run a repair on all your databases. In the cPanel, click on the MySQL Databases icon and in the Repair section, choose a database to repair. You can safely run a Check and Repair routine on all of your databases.
You can try to optimize all of your databases. In the cPanel, click the PHP MyAdmin icon. On the next screen, choose a database name from the left side column. When the tables appear on the main screen, scroll to the bottom and click the link "Select All". Next, use the drop-down menu, and on the bottom, choose the "Optimize" option. You can do this optimize routine to all of the tables in all of your databases.
Performing these two simple steps will not harm your important data as these steps above are non-intrusive maintenance routines. As such, they may not fix the core issue as well. For instance, if you have severe data corruption, it can cause your queries to time out before they fully execute. Data corruption can be difficult to detect, and repair. Database corruption can occur if a database operation did not completely succeed. Partial data is a form of corruption which can break Referential Integrity, causing your web application to fail also. In short, the free Repair or Optimization routines that I just mentioned may not be sufficient to fix severe database corruption.
What are some Advanced Steps that you can perform on your databases?
You can download your websites onto your own local machine and create a local web development environment to test your sites. You can then set Break Points in your scripts and watch your computer's cpu performance as you Step Through your Stack and Heap. You should try to stress test your queries as well to see how they respond under a load.
You can empty tables that are merely statistic tables. When viewing your tables, you can see how many entries each one has and how many KB or MB it is using. Sometimes tables get thousands or millions of entries that just log statistical type of data, like what searches people have done on your site or what people have logged in, etc. If you have very large statistic tables, it may help optimize your site if you remove the records or rows within those tables. Warning: you should always consult the vendor of your scripts, or your web developer, before you attempt this - deleting any data in your database can potentially break your web application.
You can make a ticket to our Site/Script Compatibility Team for some guidance and tips to fix your scripting or database issues. (They will not program for you, but they can usually point you in the correct direction.
You can ask us to restore a system backup if we have one on file for you. The system backup is a snapshot of exactly how your site performed on a certain date. Doing a restore will not guarantee that your sites will be fixed, as your core issue may have existed at the time our System Backup Tool created your backup. Rolling back to a system backup will restore all of your sites, and not just a portion. Feel free to contact us to see if we have a System Backup available.
You can also ask us to do a full Reset of your account. This will delete everything on your account like it was on day one when you first signed up with us. Your account would be empty, containing no files, databases, email accounts etc. This would ensure a fresh start so that you can re-install all of your scripts with clean installations and clean databases.