SugarCRM Performance Extremes: Project SucraloCRM

SugarCRM software is designed to help business improve customer relationship management. The number of customers (and leads) varies widely from company to company and from industry to industry. A very successful company might have as few as 10 customers, while B2C companies might need to manage relations with millions or even tens of millions of customers (think Chinese or Indian telecom companies).

We will begin a series of posts that will take SuagrCRM to new performance extremes in regards to the number of objects it can handle, a project codenamed SucraloCRM (Sucralos is X600 more sweet then Sugar). The object we chose to focus on is Contacts, but the results of SucraloCRM will make SugarCRM better at handling any other objects - accounts, leads etc.

We will kick things off with a baseline benchmark. The performance figures we will show here will be used down the road for comparing our improvements and the influence of each configuration change on performance.

The Landscape

SugarCRM is installed on an AMD Athlon 64 X2 Dual Core 3800+ CPU, with 2GB of RAM machine, running Ubuntu Linux 8.0.4. We used a windows XP on an Intel core 2  Duo @ 3.16 GHz, with 2GB of RAM machine as a client, running SugarCRM on Firefox 3 browser.

Business Scenario

We will measure the performance of the most common business scenario in CRM (and in most other information systems ) - searching for an object based on a query string. In other words, we will measure the time it takes a user to perform a search for a contact in SugarCRM.

Methodology

We have two separate vanilla (unchanged, all default values) SugarCRM instances installed on our server, both were installed using SugarCRM FastStack installer for Linux. There is only one difference between the two installations - one instance has 200 Contact records, and the other has 100,000 contact records. We wanted to have another instance with 1,000,000 contact records, but importing of 100K took about 10 hours to complete - started Thursday late afternoon, ended Friday early morning. That made us decide that another focus area for SucraloCRM - other than search performance - will be improving import performance. The 100K contact records were automatically generated by Talend, containing ‘real’ Contact data- first and last names, full address information (street, city,state etc.), email, long text description etc.

Prior to any test we run, we rebooted both the SugarCRM server and the client. We then ran multiple searches for Contacts, based on the last name field, both from the SugarCRM interface, as well as using the OpenSTA package, rampping up to 10 concurrent users, performing different searches.

Results

The following chart summarizes the results of our baseline benchmark:

SugarCRM Benchmark Results - Contact Search

The blue and orange bars represent the time the search took to complete, for the 200 records instance and the 100,000 records instance, respectively. The 2 lines in the chart represent the natural logarithm of the number of results return by each search. For the 100K instance, several thousands of results were usually returned (again, the number displayed here are the log of the actual number of results). for the 200 records instance, the actual number of results ranges between 5-25.

Analysis

As expected, search performance for the 100,000 contact SugarCRM instance are worse than the 200 contacts. But we should take a closer look at the search for the string ‘d’: for the 200 records instance, 8 results were returned, while for the corresponding search on the 100K instance, only 13 results were returned. We can also see that search times for the string ‘d’ under both instances are almost identical (1.14 and 1.16 seconds). That means that the actual number of of records for an object (200 vs. 100,000) is not the most important factor influencing search performance, but rather the size of the result set is what impacts performance most.

Next steps

In future posts, we will discuss in details why this is happening, look for ways to exploit this behavior and understand how it is related to the terrible import times we are experiencing.

We strongly recommend you to register to our RSS feed to stay updated on project SucraloCRM: extreme SugarCRM performance.


Comments

Leave a Reply