Remediază eroarea „Limita de memorie PHP sub valoarea recomandată” în ownCloud 10

Rezultatul dorit nu este doar „dispărurea avertismentului”. O soluție corectă înseamnă că procesul PHP care deservește efectiv ownCloud 10 raportează o limită de memorie de cel puțin 512 MB, avertismentul de administrator ownCloud se șterge, joburile programate sau CLI utilizează și ele o limită adecvată și gazda are încă suficientă memorie fizică pentru a rula PHP, serverul web, baza de date și joburile în fundal fără schimburi intense de date.

Pentru ownCloud Classic 10.16, mediul oficial Docker folosește OWNCLOUD_MEMORY_LIMIT=512Mca implicit recomandat. Documentația ownCloud distinge, de asemenea, configurația PHP utilizată de serverul web de cea utilizată de php-cli. Această distincție este principalul motiv pentru care administratorii uneori modifică memory_limit, repornesc un serviciu și tot văd același avertisment.

Acest ghid începe cu verificările cele mai puțin perturbatoare, apoi prezintă căile Apache, PHP-FPM, CLI și Docker. De asemenea, explică când este justificată creșterea limitei și când problema reală este memoria RAM insuficientă a gazdei, mai degrabă decât setarea PHP în sine.

Cum arată succesul

VerificaRezultat bunDacă eșuează
Prezentare generală a administratorului ownCloudNiciun avertisment „Limita de memorie PHP sub valoarea recomandată”Probabil ai editat configurația PHP greșită sau nu ai repornit serviciul corect.
Runtime PHP webmemory_limitarată 512M sau mai multGăsiți fișierul de configurare încărcat utilizat de solicitarea web.
Interfață CLI / cron runtimephp -r 'echo ini_get("memory_limit");'arată valoarea dorităphp.iniEditați și codul CLI specific .
Memoria gazdăSuficientă memorie RAM disponibilă; presiune de swap susținută mică sau delocNu creșteți limitele PHP orbește. Revizuiți numărul de workeri PHP sau dimensionarea gazdelor.
JurnaleleNicio eroare recurentă de tipul „Dimensiunea memoriei permise a fost epuizată”Găsiți volumul de lucru care consumă memorie înainte de a crește din nou limita.

1. Confirmați avertismentul și valoarea pe care o vede ownCloud

Prezentare generală pentru administratorul ownCloud 10 care afișează un avertisment că limita de memorie PHP este sub valoarea recomandată și o limită de 128 MB
Începeți de la valoarea vizibilă pentru ownCloud. O limită de 128 MB sau 256 MB pentru web-runtime este sub valoarea de 512 MB utilizată de configurația Docker recomandată de ownCloud.

Deschideți setările de administrare ownCloud și notați avertismentul privind limita de memorie. Înainte de a modifica orice, înregistrați versiunea ownCloud, versiunea PHP, tipul serverului web și limita curentă de memorie. Acest lucru vă oferă o bază de referință și ajută la prevenirea modificării unei instalări PHP greșite pe sistemele cu mai multe versiuni PHP.

Documentația actuală a versiunii 10.16 a ownCloud precizează că cerințele serverului depind în mare măsură de numărul de utilizatori, numărul de fișiere și activitate. Configurația Docker setează OWNCLOUD_MEMORY_LIMIT=512Mși recomandă păstrarea acestei valori implicite. Acest lucru face ca 512 MB să fie o valoare de referință rezonabilă pentru rezolvarea avertismentului, nu o garanție că fiecare sarcină de lucru se va încadra în limita a 512 MB.

Referințe oficiale: recomandări de implementare ownCloud și variabile de mediu ownCloud Docker .

2. Nu aveți încredere în valoarea CLI pentru a reprezenta serverul web

Terminal Ubuntu care afișează php -i și php --ini cu o limită de memorie CLI de 128 MB și calea CLI php.ini
php --iniraportează configurația pentru PHP CLI. Aceasta poate diferi de configurația PHP utilizată de Apache sau PHP-FPM pentru a servi ownCloud.

Rulați aceste comenzi pentru a vedea ce folosește procesul PHP din linia de comandă:

php --ini
php -r 'echo ini_get("memory_limit"), PHP_EOL;'

Acest lucru este util pentru occjoburi cron și cron, dar nu dovedește ce folosește cererea web. ownCloud documentează explicit căi de configurare separate, cum ar fi:

/etc/php/<version>/apache2/php.ini
/etc/php/<version>/fpm/php.ini
/etc/php/<version>/cli/php.ini

Dacă interfața CLI afișează 512M în timp ce pagina de administrare încă afișează probleme, acea nepotrivire este un semn puternic că serverul web încarcă un alt fișier php.ini.

Consultați notele de configurare PHP ale ownCloud , care avertizează în mod specific că este posibil să fie nevoie să modificați setările PHP în mai multe fișiere INI.

3. Găsiți configurația PHP utilizată de cererea web

Pagina phpinfo a browserului care arată fișierul de configurare PHP-FPM încărcat și un memory_limit de 128M lângă un terminal care arată configurația CLI
Comparați runtime-ul PHP al browserului cu runtime-ul CLI. Fișierul de configurare încărcat din browser este fișierul care contează pentru avertismentul web ownCloud.

Cel mai fiabil test este inspectarea PHP din aceeași stivă web care deservește ownCloud. Documentația ownCloud descrie utilizarea unei phpinfo.phppagini temporare:

<?php phpinfo(); ?>

Plasați-l temporar în rădăcina web, deschideți-l într-un browser și localizați:

  • Fișier de configurare încărcat
  • limită_de_memorie
  • API-ul serverului

Apoi ștergeți imediat fișierul phpinfo . ownCloud avertizează că părăsirea unei pagini phpinfo publice expune informații sensibile ale serverului.

Dacă browserul spune „ /etc/php/7.4/fpm/php.iniwhile php --inisays” /etc/php/7.4/cli/php.ini, acum știi exact de ce editarea fișierului CLI nu a șters avertismentul.

4. PHP-FPM: creșterea limitei de execuție web la 512M

Editorul Nano se deschide pe un fișier php.ini PHP-FPM cu memory_limit setat la 512M
Pentru o configurare Nginx sau Apache folosind PHP-FPM, modificați FPM-ul php.inisau suprascrierea aplicabilă a pool-ului/site-ului, nu doar fișierul CLI.

Pe o instalare tipică de Debian sau Ubuntu:

sudo nano /etc/php/7.4/fpm/php.ini

Găsi:

memory_limit = 128M

și schimbați-l în:

memory_limit = 512M

Folosește versiunea PHP instalată în cale. Apoi, repornește serviciul FPM corect și serverul web, dacă este necesar:

sudo systemctl restart php7.4-fpm
sudo systemctl reload nginx

Pentru Apache cu proxy_fcgisau o altă configurație FPM, reporniți PHP-FPM și reîncărcați Apache în schimb.

ownCloud menționează, de asemenea, că PHP-FPM nu consumă setări PHP din .htaccess. Dacă vă bazați pe suprascrieri per director cu FPM, utilizați mecanismul de configurare PHP/FPM acceptat pentru mediul dvs., cum ar fi php.iniconfigurația corespunzătoare , pool sau .user.ini.

5. Apache cu mod_php: editați configurația Apache PHP

Editorul Nano afișează memory_limit setat la 512M în fișierul Apache php.ini, urmat de o comandă de repornire Apache
Cu Apache mod_php, editați configurația PHP specifică Apache și reporniți Apache astfel încât noile procese worker să încarce noua limită.

Dacă Apache încarcă PHP direct ca modul, editați fișierul specific Apache:

sudo nano /etc/php/7.4/apache2/php.ini

Set:

memory_limit = 512M

Apoi reporniți Apache:

sudo systemctl restart apache2

Nu copiați mecanic numărul versiunii. Verificați versiunea încărcată efectiv de Apache. Sistemele actualizate prin intermediul mai multor versiuni PHP păstrează adesea mai multe directoare sub /etc/php/.

Criteriul rezultatului este simplu: după repornire, runtime-ul PHP orientat spre web trebuie să afișeze noua valoare. Dacă încă afișează 128M, un alt strat de configurare suprascrie editarea ta.

6. Actualizați limita CLI atunci când occ sau cron utilizează prea puțină memorie

Avertismentul web pentru administratori este generat de runtime-ul web, dar occjoburile cron utilizează interfața de comandă PHP. Documentația ownCloud menționează acest lucru în mod explicit.

Edita:

sudo nano /etc/php/7.4/cli/php.ini

Set:

memory_limit = 512M

Apoi verificați:

php -r 'echo ini_get("memory_limit"), PHP_EOL;'

Nu este nevoie să reporniți un serviciu pentru CLI PHP, deoarece fiecare invocare CLI pornește un proces nou. Dar dacă jobul cron apelează explicit un alt fișier binar PHP, verificați exact acel fișier binar, în loc să presupuneți că /usr/bin/phpeste cel utilizat.

ownCloud recomandă rularea occca utilizator HTTP, de obicei www-datape Debian/Ubuntu. Documentația oficială occ avertizează, de asemenea, că occar trebui utilizată aceeași versiune PHP ca serverul web atunci când sunt instalate mai multe versiuni.

7. Docker: folosiți OWNCLOUD_MEMORY_LIMIT în loc să editați fișierele din interiorul containerului

Fișierul Docker Compose care arată OWNCLOUD_MEMORY_LIMIT setat la 512M și containerul ownCloud recreat
Pentru containerul oficial ownCloud, setați OWNCLOUD_MEMORY_LIMIT=512Mîn mediul containerului și recreați serviciul astfel încât configurația PHP generată să fie actualizată.

Pentru imaginea oficială ownCloud Docker, utilizați variabila de mediu documentată:

environment:
  OWNCLOUD_MEMORY_LIMIT: 512M

Apoi recreați serviciul:

docker compose up -d

Nu faceți corecția principală editând php.iniîn interiorul unui container efemer. Recreerea containerului poate elimina aceste modificări. Documentația oficială a mediului ownCloud Docker definește OWNCLOUD_MEMORY_LIMIT=512Mși recomandă păstrarea acelei valori implicite.

Dacă gazda Docker are o limită de memorie strictă, verificați și constrângerile containerului:

docker stats

O limită PHP de 512 MB nu oferă în mod magic containerului 512 MB de memorie liberă; aceasta permite doar unei singure cereri PHP să consume până la această cantitate. Containerul și gazda au nevoie în continuare de suficientă memorie pentru toți workerii PHP simultani și alte servicii.

8. Reporniți serviciul corect și verificați din același runtime

Repornirea terminalului PHP-FPM și Nginx și o prezentare generală a ownCloud care arată limita de memorie PHP la 512 MB cu verificări reușite
Remedierea este completă numai atunci când runtime-ul web raportează 512M sau mai mult și ownCloud nu mai afișează avertismentul de memorie insuficientă.

După repornirea serviciului relevant, verificați din nou pagina temporară phpinfo sau prezentarea generală a administratorului ownCloud. Apoi eliminați pagina phpinfo.

Dacă ați modificat PHP-FPM, verificați:

sudo systemctl status php7.4-fpm
sudo systemctl status nginx

Dacă ați modificat Apache:

sudo systemctl status apache2

Reîmprospătați pagina de administrare ownCloud. Avertismentul ar trebui să dispară dacă ownCloud se execută acum cel puțin cu limita așteptată.

9. Verificați memoria RAM a gazdei înainte de a crește limita PHP peste 512M

Terminal Ubuntu care afișează memoria liberă, procesele de lucru PHP-FPM și intrările recente în jurnalul ownCloud
După creșterea limitei per cerere, verificați memoria totală a sistemului și comportamentul worker-ului PHP. Un plafon PHP mai mare poate crește consumul de RAM în cel mai rău caz atunci când sunt activi mulți worker-i.

Aleargă:

free -h
ps aux | grep php-fpm
vmstat 1

PHP memory_limiteste un plafon per script. Nu este o rezervare și nu este același lucru cu cantitatea de RAM de care are nevoie serverul. Dacă aveți 20 de worker-i PHP și acordați fiecărei cereri permisiunea de a utiliza o cantitate foarte mare de memorie, cel mai rău caz teoretic poate depăși memoria RAM a mașinii cu o marjă largă.

Documentația de optimizare ownCloud oferă același avertisment general pentru procesele serverului web: dimensionați numărul de procese astfel încât utilizarea agregată a memoriei să rămână sub memoria RAM disponibilă, altfel sistemul începe să schimbe memoria și performanța scade. Consultați îndrumările de optimizare ownCloud Classic .

Dacă avertismentul 512M a dispărut și operațiunile obișnuite sunt sănătoase, nu există niciun motiv pentru a crește limita doar pentru a face numărul mai mare.

10. Când 512M încă produce mesajul „Dimensiune memorie permisă epuizată”

O avertizare de recomandare ștersă și o eroare de epuizare a memoriei sunt probleme diferite. Dacă jurnalele conțin mesaje precum:

PHP Fatal error: Allowed memory size of ... bytes exhausted

identificați operațiunea care o declanșează. Scanările mari, lucrările de criptare, operațiunile de stocare externă, procesarea imaginilor sau o aplicație terță parte pot avea profiluri de memorie foarte diferite.

Verificați jurnalul ownCloud și jurnalul de erori PHP/server web. O instalare standard ownCloud își scrie propriul jurnal în directorul de date configurat, de obicei data/owncloud.log. Evitați să tratați „creșteți la 1G” ca pasul următor automat. Mai întâi stabiliți dacă aceeași operațiune atinge în mod repetat limita.

Dacă o sarcină administrativă cunoscută are nevoie în mod legitim de mai multă memorie, o suprascriere CLI specifică poate fi mai sigură decât limitarea globală a fiecărei cereri web:

php -d memory_limit=1G occ <command>

Folosește această funcție doar atunci când comanda și comportamentul memoriei sunt înțelese. Nu remediază o cerere web care rulează prin PHP-FPM sau Apache.

De ce avertismentul poate persista după editarea fișierului php.ini

SimptomCauza probabilăUrmătoarea verificare
php -rarată 512M, ownCloud încă arată 128MAi modificat doar CLI PHPVerificați phpinfo-ul browserului și fișierul său de configurare încărcat.
Fișierul FPM afișează 512M, browserul încă afișează 128MPool, .user.ini, sau un alt fișier INI îl suprascrie.Inspectați valorile „local” și „master” din phpinfo și fișierele INI analizate suplimentar.
Valoarea se schimbă numai după repornireServiciul corect nu a fost repornitReporniți PHP-FPM sau Apache explicit după editare.
Valoarea Docker revine la vechea setare după recreareAi editat în interiorul containeruluiSetați OWNCLOUD_MEMORY_LIMITîn Compose sau în mediul de implementare.
Avertismentul dispare, dar serverul începe să facă schimb de informații.Concurența PHP depășește memoria gazdeiReduceți numărul de lucrători, optimizați volumul de lucru sau adăugați RAM.

Nu confundați memory_limit cu limitele de încărcare

memory_limit, upload_max_filesize, și post_max_sizerezolvă diferite probleme. Creșterea memoriei PHP nu permite automat utilizatorilor să încarce fișiere mai mari. Notele de configurare ale ownCloud 10.16 precizează separat că post_max_sizear trebui configurat la cel puțin 512 MB pentru minimul documentat și explică faptul că limitele de încărcare necesită setări proprii.

Dacă simptomul real este „încărcările mari eșuează”, verificați upload_max_filesize, post_max_size, limitele dimensiunii corpului serverului proxy/web, timeout-urile și capacitatea temporară a discului. Nu utilizați o valoare mai mare memory_limitca înlocuitor pentru aceste controale.

Listă de verificare finală

  • Confirmați avertismentul și valoarea curentă în ownCloud.
  • Identificați dacă ownCloud folosește Apache mod_php sau PHP-FPM.
  • Găsiți fișierul de configurare încărcat al runtime-ului web .
  • Setați PHP-ul web memory_limitla cel puțin 512M.
  • Actualizați și CLI PHP dacă occsau cron folosește o limită inferioară.
  • Pentru Docker, setați OWNCLOUD_MEMORY_LIMIT=512Mîn mediul de implementare.
  • Reporniți sau recreați serviciul care deservește de fapt PHP.
  • Verificați valoarea din runtime-ul web, nu doar din CLI.
  • Confirmă că avertismentul ownCloud a dispărut.
  • Monitorizați memoria RAM a gazdei și memoria swap înainte de a crește limita peste 512 MB.

Concluzie

Soluția completă pentru eroarea „Limita de memorie PHP sub valoarea recomandată” în ownCloud 10 este de a face ca runtime-ul PHP care deservește efectiv ownCloud să utilizeze o limită de 512 MB sau mai mare, apoi de a verifica rezultatul din același runtime. Cea mai frecventă eroare este editarea /etc/php/.../cli/php.iniîn timp ce ownCloud rulează prin PHP-FPM sau Apache cu un fișier de configurare diferit.

Opriți-vă după ce avertismentul a dispărut, operațiunile de rutină sunt sănătoase, iar gazda are un spațiu de memorie confortabil. Dacă PHP încă consumă 512 MB în timpul unei anumite operațiuni, treceți de la „creșterea numărului” la diagnosticarea sarcinii de lucru: inspectați comanda eșuată, aplicațiile, jurnalele, concurența și memoria RAM fizică. O limită mai mare poate fi potrivită, dar numai atunci când sarcina de lucru o justifică și serverul o poate suporta în siguranță.

Lasă un comentariu

10 cele mai bune instrumente Ping Sweep pentru găsirea dispozitivelor în rețeaua dvs.

10 cele mai bune instrumente Ping Sweep pentru găsirea dispozitivelor în rețeaua dvs.

Comparați 10 instrumente de scanare ping pentru descoperirea rapidă a rețelelor LAN, scanarea multi-platformă și gestionarea adreselor IP. Aflați ce vă poate spune o scanare (sweep).

6 Cele mai bune instrumente de gestionare a rețelei pentru urmărirea performanței

6 Cele mai bune instrumente de gestionare a rețelei pentru urmărirea performanței

Comparați șase instrumente de gestionare a rețelei pentru monitorizarea performanței, inclusiv acoperirea SNMP, maparea, alertele, modelele de implementare și compromisurile de costuri.

QoS în rețele: Ce face calitatea serviciilor și cum funcționează

QoS în rețele: Ce face calitatea serviciilor și cum funcționează

Aflați ce înseamnă QoS în rețele, cum marcajele DSCP și cozile de trafic prioritizează aplicațiile vocale, video și de business și ce nu poate remedia QoS.

Cel mai bun software de server SFTP pentru transferuri securizate de fișiere

Cel mai bun software de server SFTP pentru transferuri securizate de fișiere

Compară software-ul de server SFTP fiabil pentru Windows și Linux, inclusiv OpenSSH, Bitvise, SolarWinds și SFTPGo. Găsește soluția potrivită pentru nevoile tale de securitate și transfer de fișiere.

Cele mai bune practici de monitorizare a rețelei: Ce să urmăriți și ce instrumente să utilizați

Cele mai bune practici de monitorizare a rețelei: Ce să urmăriți și ce instrumente să utilizați

Construiți o monitorizare practică a rețelei cu o acoperire clară a dispozitivelor, indicatori de performanță utili, alerte acționabile și o comparație între SolarWinds NPM, PRTG și OpManager.

Cele mai bune 7 instrumente de gestionare a adreselor IP pentru echipele de rețea

Cele mai bune 7 instrumente de gestionare a adreselor IP pentru echipele de rețea

Comparați șapte instrumente de gestionare a adreselor IP pentru descoperirea subrețelelor, coordonarea DNS și DHCP, inventarul rețelei și IPAM open-source.

10 cele mai bune instrumente de scanare a rețelei pentru descoperirea dispozitivelor și a adreselor IP

10 cele mai bune instrumente de scanare a rețelei pentru descoperirea dispozitivelor și a adreselor IP

Comparați instrumentele de scanare a rețelei pentru descoperirea rapidă a dispozitivelor, scanări IP pe mai multe platforme și IPAM pentru întreprinderi, cu îndrumări privind potrivirea fiecărei opțiuni la rețeaua dvs.

Cum se utilizează Nmap pentru Traceroute și citirea căii de rețea

Cum se utilizează Nmap pentru Traceroute și citirea căii de rețea

Folosește opțiunea --traceroute din Nmap pentru a mapa salturi la o gazdă autorizată, a înțelege ieșirea saltului și a RTT-ului și a depana răspunsurile lipsă fără a suprascana.

6 Cele mai bune instrumente de monitorizare a serverelor Windows pentru o disponibilitate și o performanță mai bune

6 Cele mai bune instrumente de monitorizare a serverelor Windows pentru o disponibilitate și o performanță mai bune

Comparați șase instrumente de monitorizare Windows Server în funcție de colectarea datelor Windows, vizibilitatea aplicațiilor, modelul de implementare și licențierea pentru a găsi instrumentul potrivit.

6 instrumente de monitorizare a rețelei Linux pentru dispozitive, gazde și trafic

6 instrumente de monitorizare a rețelei Linux pentru dispozitive, gazde și trafic

Comparați șase instrumente de monitorizare a rețelei Linux pentru descoperirea dispozitivelor SNMP, grafice de interfață, metrici gazdă, verificări de servicii și fluxuri de trafic.