Stats


Generated Report
Apache HTTP Server Optimization Summary
olegmikheev.com Performance Tuning Report
Date: Sunday, February 8, 2026
Apache Version: 2.4.63 (CentOS Stream)
Optimization Expert: Jim Jagielski (Apache Co-founder persona)
Executive Summary
This report documents a systematic performance optimization of the Apache HTTP server running at https://olegmikheev.com. The optimization process followed a structured protocol: establishing a baseline (HTTP/1.1), migrating to HTTP/2, and then performing iterative autonomous tuning.
Key Results
| Metric | Baseline (HTTP/1.1) | HTTP/2 Only | HTTP/2 + Caching | Best (HTTP/2 + SSL+Tuning) |
|---|---|---|---|---|
| Performance Score | 0.98 | 0.96 | 0.99 | 1.00 |
| TTFB (ms) | 115.0 | 107.0 | 114.0 | 115.0 |
| LCP (ms) | 1,061.3 | 1,311.9 | 836.2 | 718.0 |
| TBT (ms) | 0.0 | 0.0 | 0.0 | 0.0 |
Improvements vs Baseline:
- Performance Score: +2.0% (reached perfect 1.00)
- TTFB: Maintained at 115ms
- LCP: -32.4% reduction (718ms vs 1061ms)
Detailed Comparison Table
| Snapshot | Score | TTFB | LCP | TBT |
|---|---|---|---|---|
| Baseline (HTTP/1.1) | 0.98 | 115.0 ms | 1061.3 ms | 0.0 ms |
| HTTP/2 Migration | 0.96 | 107.0 ms | 1311.9 ms | 0.0 ms |
| Iteration 1: Caching Headers | 0.99 | 114.0 ms | 836.2 ms | 0.0 ms |
| Iteration 2: SSL + Connection Tuning | 1.00 | 115.0 ms | 718.0 ms | 0.0 ms |
| Iteration 3: MPM + Security Headers | 0.99 | 159.0 ms | 705.0 ms | 0.0 ms |
Note: Iteration 3 was reverted as it degraded TTFB significantly (159ms vs 115ms)
Changelog: Final Best Configuration
The following configuration changes remain deployed and constitute the optimized state:
1. HTTP/2 Protocol Support
File: conf.d/ssl.conf
# Enable HTTP/2 protocol
Protocols h2 http/1.1
2. SSL Session Cache Optimization
File: conf.d/ssl.conf
SSLSessionCacheTimeout 600
Increased from default 300s to 600s for better session reuse
3. HTTP/2 Connection Tuning
File: conf.d/ssl.conf
H2Push off
H2MaxSessionStreams 100
4. KeepAlive and Connection Settings
File: conf/httpd.conf
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
ServerTokens Prod
ServerSignature Off
HostnameLookups Off
EnableMMAP On
EnableSendfile On
5. Browser Caching Configuration
File: conf.d/expires.conf
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 day"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
ExpiresByType application/font-woff2 "access plus 1 year"
ExpiresByType font/woff "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
</IfModule>
<IfModule mod_headers.c>
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|webp|woff|woff2)$">
Header set Cache-Control "public, max-age=31536000, immutable"
</FilesMatch>
</IfModule>
Iteration History
Step 1: Baseline (HTTP/1.1)
- Status: Completed
- Results: Score=0.98, TTFB=115ms, LCP=1061ms
- Note: Original production configuration
Step 2: HTTP/2 Migration
- Status: Completed
- Results: Score=0.96, TTFB=107ms, LCP=1312ms
- Analysis: TTFB slightly improved but LCP degraded (multiplexing overhead)
Step 3: Iteration 1 – Caching Headers
- Status: Completed
- Results: Score=0.99, TTFB=114ms, LCP=836ms
- Analysis: Significant LCP improvement (21%) with proper caching
Step 3: Iteration 2 – SSL + Connection Tuning
- Status: Completed (BEST)
- Results: Score=1.00, TTFB=115ms, LCP=718ms
- Analysis: Perfect score achieved, 32% LCP improvement over baseline
Step 3: Iteration 3 – MPM + Security Headers
- Status: REVERTED
- Results: Score=0.99, TTFB=159ms, LCP=705ms
- Analysis: LCP slightly better but TTFB degraded by 44ms (38% increase)
- Decision: Reverted due to TTFB degradation
Technical Notes
HTTP/2 Considerations
- Server negotiated HTTP/2 successfully on the HTTPS port
Protocols h2 http/1.1directive enables ALPN negotiationH2Pushdisabled to prevent unnecessary resource pushing
Why MPM Tuning Was Reverted
While MPM tuning can improve throughput under high load, the specific configuration tested actually degraded TTFB from 115ms to 159ms (38% increase). This could be due to:
- Thread/process startup overhead
- Different workload characteristics than the tuning was designed for
- Resource contention on the specific server
The principle of “measure, don’t guess” was applied – the data showed degradation, so we reverted.
Security Headers Revert
Security headers were removed to maintain focus on pure performance optimization. They can be re-added in a future security hardening phase without significantly impacting performance.
Conclusion
The optimization achieved:
- Perfect Lighthouse Performance Score (1.00)
- 32% reduction in Largest Contentful Paint (718ms vs 1061ms)
- Maintained excellent TTFB (115ms)
The final configuration balances HTTP/2 protocol benefits with proper caching directives and connection tuning, resulting in a fast, production-ready Apache server configuration.
Recommended Next Steps:
- Monitor real-world performance metrics
- Consider enabling Brotli compression if mod_brotli is available
- Implement security headers in a separate hardening phase
- Test with real user monitoring (RUM) to validate synthetic test results
Report generated by Apache Optimization Agent
Measurement Protocol: 5 Lighthouse runs, median selected
Chrome Flags: –headless –no-sandbox –disable-dev-shm-usage –disable-gpu