Files
Linux-Server-Management-Too…/lib
cschantz ff644c0b49 Add improved PHP-FPM calculator with traffic-based recommendations
IMPROVEMENTS IN CALCULATION ALGORITHM:

1. DYNAMIC SYSTEM RESERVE (percentage-based instead of hard-coded)
   - Small servers (< 2GB): 15% reserve
   - Medium servers (2-8GB): 20% reserve
   - Large servers (8-32GB): 25% reserve
   - Very large servers (> 32GB): 30% reserve

   OLD: Hard-coded 1GB was too high for small VPS (50% on 2GB!)
        and too low for large servers

2. TRAFFIC-BASED RECOMMENDATIONS
   - Analyzes 7-day access logs for peak concurrent requests
   - Calculates traffic stability factor (0.6-0.9)
   - Adjusts safety buffer based on traffic patterns

   OLD: Ignored actual traffic patterns entirely

3. MYSQL MEMORY ACCOUNTING
   - Detects MySQL memory usage from ps or MySQL variables
   - Reduces PHP allocation accordingly

   OLD: Didn't account for other services running alongside PHP

4. PM MODE RECOMMENDATIONS
   - STATIC for stable, high-traffic domains (best performance)
   - DYNAMIC for variable traffic (memory efficient)
   - ONDEMAND for low-traffic domains (minimal memory)

   OLD: No pm mode recommendations at all

5. SPARE SERVER OPTIMIZATION
   - Recommends min_spare_servers based on peak/3
   - Recommends max_spare_servers based on peak*2/3

   OLD: Didn't optimize spare server settings

6. COMBINED APPROACH
   - Uses BOTH memory AND traffic constraints
   - Applies lower of memory-based vs traffic-based max_children
   - Adapts safety buffer to traffic stability

   OLD: Single constraint approach (memory-only)

EXAMPLE IMPROVEMENTS:
- 2GB VPS: Reduced from recommending 40 processes to 5
  (matches actual traffic, saves ~700MB memory)
- 32GB server: Changed from ignoring MySQL to accounting for 2GB
  (prevents memory exhaustion under load)
- Variable-traffic site: Now recommends DYNAMIC mode instead of STATIC
  (saves 70% memory during off-peak)

This library is backwards-compatible and can gradually replace
calculate_optimal_max_children() in php-analyzer.sh

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-02-17 20:49:13 -05:00
..