
Prije nego što uđemo u detalje podešavanja Apachea, trebamo razumjeti što se događa kada VPS ili namjenski poslužitelj postane neodazivan zbog loše optimizirane konfiguracije.
Pretjerano podešen poslužitelj konfiguriran je tako da dopušta više simultanih zahtjeva, kroz ServerLimit, nego što njegov hardver realno može podnijeti. Takav podešen poslužitelj ima prijelomnu točku (tipping point), a kada je dosegne, završi u trajnom swap scenariju. To znači da kernel stalno čita i zapisuje podatke u swap datoteku i iz nje.
Swap datoteke imaju višestruko sporiji pristup čitanju i pisanju od standardne memorije. Njihova latencija stvara usko grlo dok kernel pokušava premještati podatke brže nego što je fizički moguće, što se naziva thrashing. Ako se ne zaustavi na vrijeme, thrashing vrlo brzo izbacuje poslužitelj iz kontrole i vodi prema rušenju sustava.
Ako thrashing potraje predugo, može čak fizički oštetiti disk simulirajući godine intenzivnog čitanja i pisanja u vrlo kratkom razdoblju. Zato pri optimizaciji Apachea moramo paziti da ne kreiramo takav scenarij. To možemo izbjeći izračunom thrashing pointa poslužitelja na temelju nekoliko faktora.
Procjena thrashing pointa
Procjena thrashing pointa, odnosno ServerLimit vrijednosti, koristi jednostavnu jednadžbu:
( buff/cache - Reserved ) / Avg.Apache
buff/cache: ukupna količina memorije koju kernel koristi za buffere i cacheReserved: količina memorije rezervirana za procese koji nisu ApacheAvailable: razlika izmeđubuff/cacheiReservedAvg.Apache: prosječna memorijska potrošnja svih aktivnih Apache child procesa tijekom vršnog opterećenja
Thrashing point treba računati tijekom vršnih sati i povremeno ga ponovno procjenjivati radi optimalnih performansi.
Dobivena vrijednost predstavlja broj Apache child procesa koje poslužitelj može držati u radu. To vrijedi i za dretvene i za nedretvene modele. Kada broj child procesa u memoriji dosegne taj prag, poslužitelj počinje gubiti stabilnost.
Buff/cache memorija
Na modernim Linux sustavima buff/cache može se izračunati iz /proc/meminfo datoteke zbrajanjem Buffers, Cached i Slab statistika. Pomoću free naredbe te podatke možete brzo dohvatiti:
free
Nemojte se zabuniti oko stupca available; ovdje nas zanima upravo memorija koju možemo prenamijeniti, a to je buff/cache.
Rezervirana memorija (Reserved memory)
Rezervirana memorija je dio memorije namijenjen drugim servisima osim Apachea. Najveći potrošači izvan Apachea često su MySQL, Tomcat, Memcache, Varnish i Nginx. Potrebno je pogledati njihove konfiguracije kako biste odredili koliko memorije treba rezervirati.
Kao pravilo, sačuvajte oko 25% ukupnog buff/cache iznosa za ostale servise na poslužitelju.
Primjeri:
- standardni cPanel poslužitelj s više servisa uz Apache i MySQL često treba i do 25% rezervirane memorije
- čisti Apache web čvor u load-balanced okruženju možda ne treba gotovo ništa dodatno rezervirati
Prosječna Apache memorija (Average Apache memory)
Prosječnu veličinu Apache procesa relativno je jednostavno odrediti pomoću ps naredbe koja ispisuje RSS veličinu svih aktivnih httpd procesa. Na nekim distribucijama naziv procesa može biti apache umjesto httpd.
Ovaj primjer koristi kratki awk kako bi odmah izračunao prosjek:
ps o rss= -C httpd|awk '{n+=$1}END{print n/NR}'
Ako želite ručno pregledati veličine procesa, možete koristiti i:
ps o rss -C httpd
Izračun thrashing pointa
Kada prikupite podatke, podijelite Available memoriju s Avg.Apache i rezultat zaokružite prema dolje na cijeli broj. Available memorija jednaka je buff/cache minus Reserved.
Sažetak procesa izgleda ovako:
{{<table “table”>}}
| Varijabla | KB | Napomena |
|---|---|---|
| buffer/cache | 808435 | Dobiveno naredbom free |
| Reserved | 202108 | Pravilo je do 25% buffer/cache memorije |
| Available | 606327 | buffer/cache minus Reserved |
| Avg Apache | 24500 | Dobiveno pomoću ps naredbe |
| Thrashing point | 24 | Available podijeljeno s Avg Apache |
| {{ |
To je pojednostavljen pregled kako doći do svake varijable potrebne za procjenu thrashing pointa.
Ispod su i konzervativne procjene za različite memorijske konfiguracije. Mogu poslužiti kao polazišna točka, ali ih treba potvrditi promatranjem stvarnih performansi tijekom vršnih sati.
{{<table “table”>}}
| Memorija | Zahtjevi |
|---|---|
| 0.5 GB | 4 |
| 1 GB | 10 |
| 2 GB | 23 |
| 4 GB | 46 |
| 6 GB | 70 |
| 8 GB | 93 |
| 12 GB | 140 |
| 16 GB | 187 |
| 24 GB | 281 |
| 32 GB | 374 |
| {{ |
Određivanje dobre optimizacijske točke za Apache može spasiti poslužitelj od prekida rada, izgubljene prodaje i odlaska klijenata. Pametno upravljanje resursima ključno je kako bi servis ostao dostupan i brz.
Povezana područja
Savjetodavna područja vezana uz ovu temu
Ova su područja rada usklađena s temom članka i daju čišći prijelaz od edukativnog sadržaja do konkretne implementacije.
Nastavite čitati
Povezani članci
Prvo po zajedničkim kategorijama, a zatim po najjačem preklapanju u tagovima.

