5d13fc265c
NEW FEATURE: Optimize Server-Wide PHP Settings
This implements the missing menu option 5 with intelligent, RAM-aware optimization
that analyzes the ENTIRE server before making any changes.
INTELLIGENT OPTIMIZATION PROCESS:
Step 1: Server Memory Capacity Analysis
- Calculates total RAM vs current max capacity across all pools
- Shows status: HEALTHY, CAUTION, WARNING, or CRITICAL
- Identifies if server is at risk of OOM
Step 2: Balanced Memory Allocation
- Uses calculate_balanced_memory_allocation() from php-analyzer.sh
- Distributes available RAM proportionally based on traffic
- Ensures total allocations never exceed physical RAM
- Accounts for system overhead (reserves 2GB or 20% of RAM)
Step 3: Smart Recommendations
- Shows BEFORE/AFTER values for each user
- Displays reason: REDUCE (prevent OOM), INCREASE (traffic demands), or OPTIMAL
- Requires explicit "yes" confirmation before applying
Step 4: Batch Optimization
- Applies pm.max_children settings for all users
- Tracks: OPcache disabled domains (manual intervention needed)
- Shows real-time progress per domain
- Automatic PHP-FPM reload after changes
FEATURES:
✓ Prevents OOM: Never allocates more RAM than physically available
✓ Traffic-aware: High-traffic sites get more resources
✓ Safe defaults: Minimum 5, maximum 200 processes per pool
✓ Progress tracking: Shows optimization status for each domain
✓ Summary report: Total optimized, skipped, detected issues
✓ Automatic restart: Reloads PHP-FPM services after changes
EXAMPLE OUTPUT:
Analyzing server capacity...
Total RAM: 16384MB
Current max capacity: 14200MB (86%)
Status: CAUTION - Approaching memory limits
Calculating balanced optimization...
user1: 50 → 35 (REDUCE - prevent OOM)
user2: 20 → 45 (INCREASE - traffic demands)
user3: 30 → 30 (OPTIMAL)
Apply these balanced optimizations? (yes/no): yes
[1] Processing: example.com [user1]
✓ Optimized (1 changes): max_children: 50→35
OPTIMIZATION SUMMARY
Total domains processed: 25
Optimized: 18
Skipped (healthy): 7
Changes applied:
• max_children: 18 domains
• opcache_needs_enable: 5 domains