Am un apache cu modul PHP-FPM, 8 nuclee CPU. Încărcarea medie a procesorului împreună este de aproximativ 75% CPU, în principal din cauza MySQL, vezi ecranul.
Este de fapt o sarcină puțin mai mică acum decât de obicei.
Dar problema este că, când deschid pagina de pornire, încărcarea este aleatorie în jur de 1 secundă (timpul până la primul octet cred).
M-am gândit că ar putea fi de așteptare din cauza conexiunii mysql etc, dar se pare că timpul suplimentar pentru așteptare este timpul înainte ca PHP să primească vocea de la Apache.
Am facut doua teste interesante:
- Fișierul html simplu (fișier gol cu un cuvânt) durează 100 ms pentru a încărca.
- Fișierul php simplu (fără conexiune la mysql etc, doar fișierul php gol cu ecou simplu) durează aproximativ 1 secundă pentru a se încărca.
Deci problema este evident cu combinația php sau apache+php.
De ce și cum să o rezolvi.
Am încercat să măresc unele setări PHP fpm, cum ar fi
pm = dinamic
pm.max_children = 5
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 200
Mutați valorile din bitul implicit în sus. Da, sarcina procesorului a crescut instantaneu la aproape 99% toate procesoarele, dar viteza nu a fost fixată + serverul a fost încărcat total.
Ce sa fac?
Btw de la Apache mod-status văd că în prezent sunt tratate 25 de solicitări pe secundă (în mod normal, totuși, dublu). Și nu cred că ar trebui să aștept 1 secundă pentru a încărca script-ul php gol cu 8 nuclee CPU.
Versiunea serverului: Apache/2.4.29
PHP7.2-fpm
MPM-Eveniment
8vCPU, 16 GB RAM
BTW fișierul php gol durează, de asemenea, în jur de 3-4 secunde, deci nu doar 1 secunde.