Something I have not been able to overcome within SuiteCRM is terribly slow list loads. See the following for examples:
-Sales>Leads (This will load a list of leads, 90000 records, 72.5 seconds to load the first page of the list)
-Admin>User Management (This will load the list of users, 48 records, 45.7 seconds to load)
Specs and Version:
Windows Server 2012 R2 Datacenter, 64 Bit
8-cores, 12GB Ram
IIS 8.5
PHP 7.2.7 64bit
SuiteCRM Version 7.10.7
Sugar Version 6.5.25 (Build 344)
SecuritySuite - Enhanced 3.1.12
DashboardCopyManager 1.6
Dropdown Importer 1.1
MySQL
Database and CRM reside on the same server, but spec wise, should be able to cover this.
Please let me know if you guys have any tips or anything I can look at to speed up list loads. The rest of the CRM is snappy, only when loading a list does it grind to a halt. Thanks in advance for any info
Nothing showing in the PHP or SuiteCRM logs when running the lists loads. Aside from loading lists, the application is snappy. It’s only when records need to be displayed in a list on the page.
Please let me know what you think. Thanks in advance!
You can turn on an option called “Log slow queries” in Admin / System settings. This should generate a message in the logs whenever a query takes a long time, and then you can direct your database maintenance to those specific tables.
Different screens will use different queries “under the hood”, and it’s possible that some are much heavier than others, even if they both produce a simple list of 20 lines on the screen. We need to understand exactly which queries are running slow.
Now, I am not sure how much of your large database is actually composed of data that is interesting to you. We’ll have to look at that in depth, sometimes tables get overgrown, or there are orphaned records (that point to a deleted record), or simply too many records with “deleted=1” which you can eliminate immediately if you’re not worried about the possibility of undeleting them one day.
Do you have the Scheduler job “Prune at 1st of month” active? What does it say in the “Last ran successfully” field? This job cleans up some records with “deleted=1”, though not all.
Some notes I took along the way including from what pgr wrote in other threads and his site. Also to refer to some points in this reply you will need to get Jim’s book and the SugarCRM guide (which is free)
Instead of executing the before_save hook actions right away. We can schedule them so the user doesn’t need to wait. Especially relevant for more heavy jobs (p. 200 “Sugar Developer Guide 6.5”)
Improve performance chapter in SugarCRM 6.5 developer’s guide (p. 256)
The only thing I would add to that is checking also orphaned records, with queries like these:
SELECT *
FROM contacts_cstm ChildTable
LEFT JOIN contacts ParentTable
ON ChildTable.id_c = ParentTable.id
WHERE ParentTable.id IS NULL
This will allow you to clean up a lot of stuff from cstm tables (custom fields of regular modules), from relationship tables, etc. Lots of these get left behind as you delete records in SuiteCRM.