Series: WordPress Performance on DirectAdmin (Rocky Linux 9)
Phase 7: Themes, Gutenberg & Measurement — Part 26 of 30
Theme Twenty Twenty-Five Performance: A Real-World Analysis
Introduction
WordPress’s default Twenty Twenty-Five theme is widely deployed. For sysadmins managing WordPress on DirectAdmin with Rocky Linux 9, understanding its performance characteristics and tuning opportunities is crucial for stable, high-performing sites. This article breaks down practical steps to analyze and optimize the Twenty Twenty-Five theme in a DirectAdmin-managed environment, with emphasis on PHP-FPM, web server templates, and real-world measurement.
Baseline: Environment and DirectAdmin Context
- OS: Rocky Linux 9 (EL9)
- Panel: DirectAdmin (controls web server and PHP-FPM configuration, per-domain pools)
- Web server stack: NGINX as proxy or Apache (mod_php or PHP-FPM)
- Theme under test: Twenty Twenty-Five (latest version, clean install)
Before tuning, ensure you’re operating on a test or staging copy. Do not apply experimental changes directly to production without validation.
Preparation: Collecting a Clean Baseline
- Clone a Production Site (Optional but Recommended)
- Use DirectAdmin’s backup/restore or
wp db export/wp db import(WP-CLI) to duplicate the site for testing.
- Use DirectAdmin’s backup/restore or
- Switch to Twenty Twenty-Five Theme
wp theme install twentytwentyfive --activate --allow-root - Clear Cache (if using any cache plugin or server-side cache)
wp cache flush --allow-root - Confirm PHP-FPM Pool
Check which PHP version and pool the site is using via DirectAdmin or:
sudo cat /usr/local/directadmin/data/users/<DA-username>/php.conf
Measuring Performance: Real-World Tools
1. Static Load Testing
- Install wrk (if not present):
sudo dnf install wrk -y - Run a basic wrk test:
wrk -t4 -c32 -d30s https://example.com/- Interpret: Requests/sec and latency are your baseline.
- Check logs for errors:
sudo tail -f /var/log/nginx/access.log /var/log/nginx/error.logsudo tail -f /var/log/httpd/access_log /var/log/httpd/error_log
2. Dynamic Content and PHP Profiling
- Check PHP-FPM status:
sudo systemctl status php-fpmsudo systemctl status php-fpm<version> - Enable and query PHP-FPM pool status (DirectAdmin path):
- Edit pool config:
/usr/local/php<version>/etc/php-fpm.d/<user>.conf - Add (if not present):
-
pm.status_path = /php-fpm_status - Reload PHP-FPM:
-
sudo systemctl reload php-fpm<version> - Query status (using curl):
-
curl https://example.com/php-fpm_status - Remove or restrict this endpoint after measurement to avoid information leakage.
- Edit pool config:
3. Application-Level Measurement (WP-CLI, Query Monitor)
- Use WP-CLI to time homepage loads:
time wp option get home --allow-root - Install the Query Monitor plugin (optional, for debugging complex cases):
-
wp plugin install query-monitor --activate --allow-root
Theme-Specific Performance Observations
- Twenty Twenty-Five is block-based (uses Gutenberg): Core output is optimized, but real-world performance depends on plugins and custom blocks.
- Minimal CSS/JS: On a default install, assets are lean, but customizations or FSE (Full Site Editing) can add bloat.
- Database queries: The theme itself is not query-heavy, but dynamic block patterns or plugin integrations can increase query count.
- Server-side rendering: With block themes, more is rendered server-side, so PHP-FPM tuning is relevant even for “static” pages.
PHP-FPM Pool Tuning for Twenty Twenty-Five
DirectAdmin creates per-domain or per-user PHP-FPM pools. Tune these to match the theme’s (and site’s) workload.
- Locate the pool config:
/usr/local/php<version>/etc/php-fpm.d/<DA-username>.conf - Key directives:
pm = ondemand(ordynamicfor higher-traffic sites)pm.max_children = 8(good small-site default; increase for busy sites)pm.start_servers = 2(for dynamic mode)pm.min_spare_servers = 1pm.max_spare_servers = 3php_admin_value[memory_limit] = 256M(raise if large blocks/complex plugins)
- Apply changes:
sudo systemctl reload php-fpm<version>
Checklist: PHP-FPM Pool Optimization
- [ ] Set
pmmode toondemandordynamicas appropriate - [ ] Adjust
pm.max_childrenper expected concurrency - [ ] Monitor
php-fpm_statusduring load to ensure no process starvation - [ ] Check logs for OOM or slow script warnings
Web Server: DirectAdmin Template Considerations
DirectAdmin manages web server configs using templates. For stable performance:
- NGINX:
- Template path:
/usr/local/directadmin/data/templates/nginx_server.conf - Ensure efficient static asset caching (add
expiresandcache-controlheaders for.css,.js,.webp, etc.) - Use
try_filesto minimize unnecessary PHP invocation: -
location / { try_files $uri $uri/ /index.php?$args; }
- Template path:
- Apache:
- Template path:
/usr/local/directadmin/data/templates/httpd.conf - Enable mod_expires or set similar cache headers for static assets.
- Review
.htaccessrewrites for unnecessary complexity.
- Template path:
After template edits, rebuild configs and reload the web server:
sudo /usr/local/directadmin/custombuild/build rewrite_confs
sudo systemctl reload nginx
sudo systemctl reload httpd
Template misconfiguration can cause downtime. Validate syntax before applying, especially on production hosts.
WordPress-Specific: Measuring Block and Theme Effects
- Check Block Impact:
- Use Query Monitor (plugin) to observe query count and slow queries when loading pages with complex blocks.
- Identify and remove unnecessary patterns, especially those loading heavy assets.
- WP-CLI Theme Benchmarking:
- Time page generation:
-
time wp eval 'echo file_get_contents("https://example.com/");' --allow-root - Compare before/after block pattern changes.
- Asset Size and Request Count:
- Inspect with
curl -Ior browser dev tools: -
curl -I https://example.com/wp-content/themes/twentytwentyfive/style.css - Check for excessive loaded assets or large images introduced by users.
- Inspect with
Advanced: Caching and Frontend Optimization
- Page Caching: For dynamic block themes, caching is essential. Use a plugin (e.g., WP Super Cache, powered via WP-CLI) or configure server caching (NGINX fastcgi_cache or Apache mod_cache).
- Asset Optimization: Minify CSS/JS if customizations add weight. Twenty Twenty-Five core assets are already minimal.
Regular Monitoring and Ongoing Analysis
- Log tailing: Watch
php-fpmand web server logs for slow requests or errors. - Performance regression checks: Re-run
wrkork6after theme/plugin changes. - Update process: Always retest after WordPress core, block plugin, or theme updates.
Summary Checklist
- [ ] Collect baseline performance with default theme and no plugins
- [ ] Tune PHP-FPM pool in DirectAdmin for expected load
- [ ] Optimize NGINX/Apache templates for static assets and rewrites
- [ ] Regularly measure with
wrkand monitor logs - [ ] Re-evaluate after significant block or plugin changes
Note: This article offers general technical guidance. Validate all configurations in a safe environment before applying them to production.
Previous: Why Your WordPress Theme Is Slowing Down the Server
Next: Optimising Gutenberg for Faster WordPress Admin Experience

