Optimize Performance
If you grow to have a large client base, page loads may become slower. 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.
The following steps can help you maintain faster speeds:
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;
Disable Client List Services Count
If you have a large number of services, calculating the number of services for each client might increase the load time when you visit Clients > View/Search Clients.
To avoid this, add the following line to your configuration.php
file:
$disable_clients_list_services_summary = true;
Logging
In WHMCS, you can enable logging for, for example, SQL errors, hooks loading, or module commands.
The following settings control debug logging:
- SQL Error Reporting in the Other tab at Configuration () > System Settings > General Settings.
- Hooks Debug in the Other tab at Configuration () > System Settings > General Settings.
- Module Debug Log at Configuration () > System Logs.
Make sure to disable these when you are not actively debugging an issue, since they can and will increase the database size exponentially.
Customizations
Third-party customizations can slow the performance of WHMCS. Ensure that any customization (for example, hooks and addons) 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 while the entire database is exported, compressed, and uploaded or emailed. If performance issues are observed at the same time every day during the database backup process, this could be a potential cause.
Server-Related
Mail Provider
Long loading times when performing an action involving sending an email (for example, placing an order, opening or replying to a support ticket, or publishing an invoice) are often caused by connection issues to the chosen email provider.
Consider switching to an external mail provider like MailGun, SendGrid, or SparkPost: they are often more performant than SMTP.
MySQL®
WHMCS performance depends on a correct MySQL® configuration, especially for larger databases. Make any changes to the server’s my.cnf
file under the mysqld
section, usually in /etc/my.cnf
(cPanel servers and most others).
- As a starting point, set
max_connections
to a low value like50
and increase based on the available RAM. - When you are 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_size
(2–4 MB)read_buffer_size
(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.
Last modified: October 29, 2024