Prije nego što uđemo u detalje podešavanja Apachea, moramo shvatiti što se događa kada VPS poslužitelj ili namjenski poslužitelj ne reagiraju zbog loše optimizirane konfiguracije.
Poslužitelj konfiguriran tako da omogućuje više istovremenih zahtjeva (ServerLimit) nego što hardver poslužitelja može upravljati imaju prekretnicu i kad jednom dođe do nje, poslužitelj će zapeti u scenariju trajne zamjene između brze memorije RAM-a i spore swap memorije pohrane. Što znači da je kernel sustava zaglavio u čitanju i upisivanju podataka u i iz datoteke swap sustava.
Zamjenske datoteke imaju brzine pristupa za čitanje/pisanje znatno sporije od standardnog prostora memorije. Kašnjenje zamijenjenih datoteka može uzrokovati usko grlo na poslužitelju jer jezgra pokušava čitati i pisati podatke brže nego što je to fizički moguće ili češće poznato kao mlaćenje. Ako se odmah ne uhvati, mlaćenje izvlači sustav izvan kontrole što dovodi do pada sustava.
Ako se mlaćenje previše dugo izvodi, ono može fizički oštetiti tvrdi disk simulirajući desetljeća aktivnosti čitanja/pisanja tijekom kratkog razdoblja. Kada optimiziramo Apache, moramo biti oprezni da ne stvorimo ovakav scenarij. To možemo postići izračunavanjem vršne točke poslužitelja na temelju nekoliko čimbenika.
Procijenite točku mlaćenja
Izračunavanje procijenjene točke mlaćenja ili ServerLimit poslužitelja koristi jednostavnu jednadžbu:
( buff/cache - Reserved ) / Avg.Apache
- buff/cache: Ukupna memorija koju jezgra koristi za međuspremnike i predmemoriju.
- Reserved: Količina memorije rezervirane za procese koji nisu Apache.
- Available: Razlika između buff/cache i Reserved memorije.
- Avg.Apache: Prosjek potrošnje sve djece koju stvara Apache tijekom vršnog radnog vremena.
Izračunavanje točke mlaćenja/ograničenja poslužitelja trebalo bi se izvoditi tijekom vršnih radnih sati i povremeno preispitivati radi optimalnih performansi.
Vrijednost vršne točke jednaka je broju Apache djece koju poslužitelj može pokrenuti; ovo se odnosi na djecu s nitima ili bez niti. Kada broj djece koja se nalaze u memoriji dosegne izračunatu točku mlaćenja, poslužitelj će se početi rušiti.
Buff/Cache memorija
Na modernim Linux sustavima, međuspremnik/predmemorija može se izvesti pomoću datoteke /proc/meminfo dodavanjem Buffers, Cached, i Slab statistike. Upotrebom free naredbe možemo brzo prikupiti ove podatke, kao u donjem primjeru:
free
Neka vas ne zavara stupac s oznakom “available” (dostupno), mi samo gledamo memoriju koju možemo ponovo koristiti, a to je stupac buff/cache.
Reserved memory
Reserved memory (rezervirana memorija) dio je memorije koji se osim za Apache čuva i za druge usluge. Neki od najvećih kandidata za dodatnu memoriju izvan Apachea su MySQL, Tomcat, Memcache, Varnish i Nginx. Potrebno je ispitati ove konfiguracije usluga kako biste utvrdili valjanu rezerviranu memoriju. Ove su konfiguracije izvan djelokruga ovog članka. Međutim, MySQL je usluga koja se najčešće susreće s Apacheom. Na mreži možete pronaći alate koji će vam pomoći analizirati i konfigurirati MySQL odvojeno od ovog članka.
Uštedite 25% ukupne buff/cache memorije za sve dodatne usluge pokrenute na poslužitelju tipa:
- Standardni cPanel poslužitelj pokreće nekoliko usluga zajedno s Apacheom i MySQL. Poslužitelj s ovim uslugama radi na težoj strani i treba mu 25% rezervirano za usluge koje nisu Apache.
- Čisti web-čvor Apache u konfiguraciji uravnoteženoj s opterećenjem velikog kapaciteta ne treba rezervirati dodatni RAM za druge usluge.
Average Apache memory
Pronalaženje prosječne veličine Apache procesa relativno je jednostavno pomoću naredbe ps za popis RSS (Resident Set Size) svih pokrenutih httpd procesa. Napomena: neke distribucije koriste “apache” umjesto “httpd” za naziv procesa.
Ovaj primjer koristi kratku skriptu awk za ispis prosjeka umjesto popisa veličina:
ps o rss= -C httpd|awk '{n+=$1}END{print n/NR}'
Ovaj je primjer kako lako ručno doći do prosijeka, ali za veće poslužitelje bit će potrebno više računanja:
ps o rss -C httpd
Izračunajte točku mlaćenja
Nakon prikupljanja podijeli Dostupnu memoriju prema Prosj. Apache, zaokruživanje na najbliži cijeli broj. Dostupna memorija je buff/cache memorija minus rezervirana memorija. Ispod je sažetak postupka izračuna u obliku tablice.
Variable | KB | Notes |
---|---|---|
buffer/cache | 808435 | Dobivamo koristeći free naredbu |
Reserved | 202108 | Pravilo kaže uzmi 25% od buffer/cache |
Available | 606327 | buffer/cache minus Reserved |
Avg Apache | 24500 | Prikupiti koristeći ps naredbu |
Thrashing point | 24 | Available podijeljeno sa Avg Apache |
Ova tablica sažima kako izvesti svaku varijablu za izračunavanje procijenjene točke mlaćenja.
U nastavku su navedene konzervativne procjene za različite konfiguracije memorije. Te se procjene mogu koristiti kao početna konfiguracija, ali će zahtijevati dodatne procjene izvedbe tijekom vršnih sati kako bi poslužitelju prilagodili direktive.
Memorija | Zahtijevi |
---|---|
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 najbolje točke optimizacije za Apache može spasiti poslužitelj od zastoja, izgubljenih prodaja i izgubljenih klijenata. Reguliranje dostupnih resursa ključna je komponenta koja osigurava da vaša usluga radi optimalnom brzinom.