OlegMikheev.com

Kimi K2.5

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.1 directive enables ALPN negotiation
  • H2Push disabled 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:

  1. Monitor real-world performance metrics
  2. Consider enabling Brotli compression if mod_brotli is available
  3. Implement security headers in a separate hardening phase
  4. 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