Maximising Performance
From WHMCS Documentation
If you grow to have a large client base, page loads may begin to slow down. This is because the more data you have, the larger the database becomes, and so calculating and looping through the data will naturally take longer. However, there are some things you can do to help keep things fast:
Software Related
- Disable Ticket Counts — When you have a lot of tickets, calculating the number of tickets per status to display each time you open a ticket can slow things down. To avoid that, disable the ticket counts by adding the following line to your WHMCS configuration.php file:$disable_admin_ticket_page_counts = true;
- Logging — In WHMCS, you can enable logging for, for example, SQL errors, hooks loading, or module commands. You can find these under Configuration () > System Settings > General Settings > Other as SQL Error Reporting or Hooks Debug, or under System Settings () > System Logs > Module Debug Log (Utilities > Logs > Module Debug Log in WHMCS 7.x and earlier). Make sure to disable these for debugging errors that may occur, since they can and will increase the database size exponentially.
- Hooks/Addons — Third party customizations can slow the performance of WHMCS. Ensure that any customization that you are using is up-to-date and works with the version of WHMCS you are running.
- Database Backups — The database backup process can be CPU, memory and disk intensive - whilst the entire database is exported, compressed and uploaded/emailed. If performance issues are observed at the same time every day during the database backup process, this could be a potential cause. Refer to the Backups documentation for more information.
Server Related
- MySQL Tweaks — WHMCS performance is largely dependent on a correct MySQL® configuration, especially for larger databases. Make any changes to the server's my.cnf</ttt> file under the <tt>mysqld section, usually in /etc/my.cnf (cPanel servers and most others). As a starting point, they may want to set max_connections to a low value like 50 and increase based on their available RAM. When you are done configuring this and the following other important settings, restart MySQL and let it run for 48 hours:
- wait_timeout (at least 300, so MySQL doesn't drop connections too soon)
- sort_buffer (2–4 MB)
- read_buffer (2–4 MB)
- max_allowed_packet (16 MB)
- System Tweaks — WHMCS is a PHP MySQL script, and so the more RAM or SWAP memory and raw processing power you have at your disposal, the better the performance from your installation. For more information, see our System Requirements. We recommend using the higher set values and modules under the Recommended Settings for best results.