“SuiteCRM is running slow” is the most common complaint in the community forums — and almost always, the fix isn’t buying a bigger server. It’s configuration. SuiteCRM on default PHP and MySQL settings is, to quote one developer, “insanely slow.” But with proper optimization, the same hardware can deliver 2–5x faster page loads.
This guide covers every optimization technique — from quick config changes that take 5 minutes to advanced database tuning that transforms a sluggish CRM into a responsive business tool. We’ve organized fixes from highest impact to lowest, so you can start with the changes that make the biggest difference.
Before You Start: Diagnosis
Before applying fixes blindly, identify where the bottleneck actually is.
Check server resources. Monitor CPU, RAM, and disk I/O during peak CRM usage. If CPU is maxed or RAM is full, you have a hardware constraint that config changes alone won’t solve. Use tools like htop (Linux), Task Manager (Windows), or your hosting provider’s monitoring dashboard.
Check page load breakdown. Use your browser’s Developer Tools (F12 → Network tab) to see what’s slow — is it the server response time (TTFB), or is it frontend asset loading? If TTFB is over 2–3 seconds, the bottleneck is server-side (PHP/MySQL). If TTFB is fast but the page still loads slowly, the issue is frontend assets.
Check the SuiteCRM log. Review suitecrm.log for errors, warnings, or repeated database queries that indicate inefficiency. Set the log level to “error” for production to reduce log overhead.
Run a Quick Repair. Before anything else, run Admin → Repair → Quick Repair and Rebuild. This resolves many performance issues caused by stale cache files, especially after upgrades or customizations.
Level 1: PHP Optimization (Biggest Impact)
PHP configuration is the single biggest performance lever. Default PHP settings are woefully inadequate for SuiteCRM.
Enable OPcache
This alone can improve performance by 30–40%. OPcache stores precompiled PHP bytecode in memory, eliminating the need to parse and compile PHP files on every request.
Add or update these settings in your php.ini file: enable OPcache, set memory consumption to 256MB, interned strings buffer to 16MB, max accelerated files to 10000, max wasted percentage to 5, use current working directory to 1, validate timestamps to 1, and revalidate frequency to 60 seconds.
After changes, restart Apache or PHP-FPM for settings to take effect.
Increase PHP Memory and Execution Limits
SuiteCRM needs more memory than PHP’s default 128MB, especially for reports, imports, and PDF generation. Set memory_limit to 512M (or 1024M for large deployments), max_execution_time to 300, max_input_time to 300, upload_max_filesize to 20M, and post_max_size to 20M.
Install Required PHP Extensions
Missing extensions cause SuiteCRM to use slower PHP-based fallbacks. Ensure these are installed: php-mysql, php-curl, php-xml, php-mbstring, php-zip, php-intl, php-json, php-gd, php-opcache, php-imap, and php-soap. Installing all suggested extensions has been reported to yield an additional 15–20% performance improvement.
Disable Xdebug in Production
If Xdebug is installed (common on development servers), it dramatically slows execution. Disable it entirely in production by removing or commenting out the Xdebug extension line in php.ini.
Level 2: SuiteCRM Configuration Tweaks (Quick Wins)
These changes are made in SuiteCRM’s config_override.php file (create it in the root directory if it doesn’t exist) or through the admin interface.
Disable Subpanel Count Queries
For databases with large datasets, the count queries on subpanels (used for pagination controls) become extremely slow — this is the #1 cause of slow detail views. Disable them by adding the hide_subpanels configuration option set to true in config_override.php.
Reduce List View Records Per Page
The default records per page can be reduced from the default to 10 or 15, decreasing the data loaded on each list view page. Set list_max_entries_per_page to 10.
Disable Detail View Navigation
By default, opening a detail view loads other records from the list for navigation. Disabling this with disable_count_query set to true speeds up detail view loading.
Minimize Logging
Set the log level to “fatal” or “error” in production. Each log write adds disk I/O overhead. Navigate to Admin → System Settings and set Logger Level to “fatal.”
Disable Tracker
The Tracker module records user navigation history, adding database writes on every page load. If you don’t use activity tracking, disable it via Admin → Tracker Settings.
Optimize Developer Mode
Ensure developer mode is OFF in production. Developer mode disables caching and compiles every file on each request. Verify in config.php that ‘developerMode’ is set to false.
Level 3: Database Optimization (Critical for Large Datasets)
MySQL/MariaDB with default settings is the second biggest performance bottleneck.
Increase InnoDB Buffer Pool Size
This is the single most impactful MySQL setting. The InnoDB buffer pool caches table data and indexes in memory. Set innodb_buffer_pool_size to 50–70% of your server’s available RAM. For a server with 8GB RAM, set it to 4G–5G. This change alone can cut query times in half for large databases.
Optimize Fragmented Tables
After significant data imports, deletions, or migrations, tables become fragmented. Run OPTIMIZE TABLE on frequently accessed tables — especially the main module tables like accounts, contacts, leads, opportunities, calls, meetings, notes, and emails. Schedule this as a monthly maintenance task.
Add Indexes on Custom Fields
SuiteCRM’s core modules have proper indexes on standard fields. However, custom fields added through Studio or custom development often lack indexes. If you search or filter by a custom field, adding an index on that field can dramatically speed up queries. Use the vardef system to add indexes in an upgrade-safe manner.
Enable MySQL Query Cache (MariaDB)
Query caching stores the results of frequently executed queries in memory. For MariaDB, set query_cache_type to 1 and query_cache_size to 64M. Note that MySQL 8.0 removed query cache entirely — use ProxySQL or application-level caching instead.
Purge Soft-Deleted Records
SuiteCRM soft-deletes records (marks them as deleted=1 rather than removing them from the database). Over time, these accumulate and slow queries. Activate these Scheduler jobs under Admin → Schedulers: “Prune Database on 1st of Month” to remove soft-deleted records, “Prune SuiteCRM Feed Tables” to clean feed data, and “Prune Tracker Tables” to remove tracking data. These should run monthly.
Clean Email and Activity Tables
The emails, emails_text, and activity-related tables grow rapidly and are among the largest in any SuiteCRM database. Archive old emails periodically. If email history beyond a certain date isn’t needed in the CRM, export and remove old records.
Level 4: Caching Layer (Advanced)
Switch to Memcached or Redis
By default, SuiteCRM uses file-system caching. Switching to Memcached or Redis for session and cache storage can reduce page load times by up to 40%. This eliminates disk I/O for cache reads and stores cached data in RAM for near-instant retrieval.
Install Memcached or Redis on your server, install the corresponding PHP extension, and update SuiteCRM’s configuration to use the new caching backend.
Enable Apache/Nginx Caching for Static Assets
Configure your web server to cache static assets (CSS, JavaScript, images) with proper cache headers. These assets rarely change but are loaded on every page. Setting Expires headers to 30 days for static content reduces repeat page load times significantly.
Level 5: Server Architecture (For Large Deployments)
For deployments with 50+ users or 100,000+ records, consider architectural improvements.
Separate Database Server
Move MySQL/MariaDB to a dedicated server. This isolates database I/O from web server processing, allowing each to use full server resources. Most cloud providers (AWS, Azure, Google Cloud) offer managed database services (RDS, Cloud SQL) that handle optimization, backups, and scaling.
Use PHP-FPM Instead of mod_php
PHP-FPM (FastCGI Process Manager) provides better process management, resource allocation, and performance than Apache’s mod_php. It allows fine-tuning of worker processes based on your traffic patterns.
Implement a Reverse Proxy
Place Nginx as a reverse proxy in front of Apache. Nginx handles static file serving and SSL termination much more efficiently than Apache, freeing Apache to focus on PHP processing.
Consider SSD Storage
If your server still uses HDD (spinning disk), switching to SSD storage provides the single biggest infrastructure improvement. Database queries, cache reads, and file access all benefit from SSD’s dramatically lower latency.
Scheduler Optimization
The SuiteCRM Scheduler runs workflow automations, email processing, and maintenance tasks. Poorly configured schedulers cause performance issues.
Disable unused scheduler jobs. Only activate jobs you actually need. Each active job consumes resources on every cron execution. Review Admin → Schedulers and deactivate anything your deployment doesn’t use.
Stagger job timing. Don’t run all scheduler jobs at the same interval. Stagger heavy jobs (workflow processing, email checking) so they don’t overlap and spike server load simultaneously.
Set appropriate intervals. Workflows don’t always need to run every minute. For most businesses, checking every 5 minutes is sufficient. Email checking every 5–15 minutes is usually adequate. Reduce frequency to match actual business needs.
Performance Monitoring Checklist
After applying optimizations, monitor these metrics weekly:
Average page load time (target: under 2 seconds). Database query time (check slow query log for queries over 1 second). Server CPU utilization (target: under 70% average). Memory usage (ensure buffer pool isn’t swapping to disk). Scheduler execution time (jobs should complete within their interval). Disk I/O wait (high I/O wait indicates storage bottleneck).
Build a custom dashboard for system health metrics, or use external monitoring tools like New Relic, Datadog, or Uptime Robot.
When to Get Professional Help
Performance optimization requires understanding the interaction between PHP, MySQL, server architecture, and SuiteCRM’s application layer. Common scenarios where professional SuiteCRM support saves time include CRM with 30+ second page loads where basic tweaks haven’t helped, databases exceeding 10GB with millions of records, deployments on shared hosting that need migration to optimized infrastructure, performance degradation after upgrades or major data imports, and recurring slow periods that correlate with scheduler job execution.
As the Official SuiteCRM Professional Partner, TechEsperto has optimized CRM performance for organizations running everything from small VPS deployments to large AWS infrastructure. Our consulting team performs comprehensive performance audits and implements targeted fixes.Contact us for a free performance assessment.



