Spørsmål og svar

Tilbake
Stikkord:  

Hvilke begrensninger har dere på ressursbruken i PHP?

Under er en tabell over nåværende ressursbegrensninger i PHP, og hvilke maksverdier vi tillater.

Vær oppmerksom på at å sette verdier høyere enn de angitte maksverdiene ikke vil ha noen effekt.

PHP-begrensninger

InnstillingStandardverdiMaksgrense
max_execution_time 90 300
max_input_time 90 90
memory_limit 256M 512M
max_input_vars 2500 5000
post_max_size 128M 128M
upload_max_filesize 128M 128M

Kan jeg øke grensene selv?

Kunder som har konkrete behov for å ha høyere grenser, har lov til å øke disse grensene manuelt, men ikke høyere enn det som står i maksgrense-kolonnen.

Endringer av denne typen legges enkeltvis inn i en fil med navnet .user.ini, som du plasserer i dokumentroten for det aktuelle webhotellet (vanligvis www).

Eksempel

.user.ini for høyere max_input_vars og max_execution_time:

max_execution_time = 90
max_input_vars = 2500

Filopplasting

Filopplasting er også begrenset av ModSecurity-reglene. Disse kan heller ikke overskrides.


PHP og uWSGI

PHP er satt opp med uWSGI basert på "emperor-vassal"-modellen. PHP for et webhotell betjenes av en vassal. Hver virtualhost starter med 1 vassal, og kan kjøre inntil 4 vassaler samtidig. Dette gjør PHP mer effektiv og begrenser samtidig hvor mye ressurser man kan bruke, og reduserer risikoen for overbelastning.


Systembegrensninger

BeskrivelseNivå
Maks CPU-tid per prosess 60 sek
Maks reell minnebruk per prosess 600 MB
Maks antall prosesser per bruker 25

Overskridelse av disse grensene vil som regel gi feilkode 500 "Internal Server Error". Grensene kan ikke uten videre fanges av PHP eller CGI selv.

I tillegg er ImageMagick begrenset til å bruke inntil ca. 500 MB på pixel- og renderingcache. Kombinasjonen av grenser er tilstrekkelig til å tillate import av 24 Mpx store JPEG-bilder i f.eks. WordPress, og noe større bilder dersom de er i PNG.


Hva betyr grensene, og hvorfor er de slik?

  • CPU-tid er en rausere begrensning enn den tiden du måler på klokken, det er hvor lenge prosessen (programmet) kan kjøre med 100% CPU-bruk. Grensen er satt så høyt fordi noen vedlikeholdsprosesser i f.eks. WordPress tar litt lengre tid enn vanlige websider, opptil 20-30 sekunder. Web-programvare skal aldri bruke i nærheten av så lang tid på å servere websider.
  • Reell minnebruk er for PHP vesentlig høyere enn det PHP selv tror den bruker, derfor er grensen så mye høyere enn det som ligger i selve PHP. Dette betyr altså ikke at det er kurant å forsøke å utnytte dette.
  • Antall prosesser er lik antallet helt samtidige PHP-script/-program eller PHP-vassaler som kjører, pluss evt. ekstra programmer som PHP starter. Med f.eks. en litt lang kjøretid på 5 sekunder tillater grensen at en webside har flere tusen vanlige besøk i timen.

Hvis et program overskrider grensene for CPU-tid eller reell minnebruk, så er det tomt for ressurser og avsluttes umiddelbart av operativsystemet. Prinsipielt sett kan PHP selv og CGI-programvare oppdage disse grensene og håndtere det, men i praksis ser vi at de har valgt å ignorere problemstillinger med ressursbruk. Derfor har vi satt grensene vesentlig høyere enn hva et nettsted trenger for å fungere bra, og høyere enn grensene som PHP selv setter.

Ved forsøk på å starte en 26. samtidige prosess, vil den 26. bli nektet å starte. De som allerede kjører påvirkes ikke av antallsbegrensningen.

Kan jeg øke systemgrensene?

Nei, disse er faste. Trenger du mer ressurser, så er ikke webhotell en tilstrekkelig tjeneste for dine behov. Vurder heller dedikert server eller virtuell privat server (VPS).


Se også:

© 2024 Domeneshop AS · Om oss · Vilkår · Personvern