I dag kommer jeg for å snakke med deg enda en gang om en av de mest brukte webtjenestene i verden: webserveren Apache2.
Det er et tema det har blitt snakket om mange ganger, men nå kommer jeg for å fortelle deg om en annen funksjon som du må ta hensyn til med denne tjenesten: Grensen for samtidige tilkoblinger. Det spiller ingen rolle om vi har veldig grunnleggende eller et romskip med en i7-prosessor og 32 GB ram ...
Grensen for samtidige tilkoblinger vil alltid være den samme med mindre vi tar de riktige tiltakene, noe som betyr at hvis vi vil ha mange mennesker tilkoblet samtidig, vil vi ikke bare kreve god maskinvare, men også en god konfigurasjon.
I dette tilfellet er det ikke nødvendig å installere noe, alt er basert på enkle konsepter som må tas i betraktning for å konfigurere apache; konsepter som må være veldig tydelige før du ønsker å gjøre noen endringer.
Det første du må tenke på er: Hvilken kapasitet har teamet mitt? Hvor mange samtidige tilkoblinger kan utstyret mitt støtte hvis jeg tvinger det så mye som mulig? Alt dette avhenger av en enkelt faktor; RAM (Random Access Memory).
Jo større RAM, jo større antall tilkoblinger, selv om det ikke er noen fast verdi (det vil si X-klienter for hver X-ram), er det først og fremst viktig å gjøre noen små beregninger på webserveren vår, med for å kjenne grensene våre.
Det første du bør vite er hvor mye RAM i gjennomsnitt hver tilkobling til Apache bruker, siden hver tilkoblede tilkobling antar et visst RAM-forbruk i systemet ... Åpenbart ikke alle tilkoblinger bruker den samme RAM, som man må lage a media ... Alt dette kan fås med følgende kommando:
ps -ylC apache2 - sort: rss | awk '{SUM + = $ 8; I + = 1} SLUT {print SUM / I / 1024} '
Det oppnådde resultatet vil være representert i megabyte og kan variere avhengig av antall aktive tilkoblinger, hvilken type sider du får tilgang til, osv ... Derfor anbefales det å utføre testen med forskjellige faner åpne; hver av dem viser om mulig annet innhold. I mitt tilfelle har resultatet for eksempel blitt 9.5458, som hvis vi avrunder det opp til toppen ville vært 10 MB RAM-forbruk i gjennomsnitt per tilkobling.
Det er også viktig å vite hvor mye RAM som forbrukes av resten av prosessene som er aktive i systemet, siden nettjenesten ikke er den eneste som kjører i operativsystemet, og det er nødvendig å legge igjen ledig RAM på serveren slik at den kan utføre resten av oppgavene. Dette kan fås med kommandoen vist nedenfor:
ps -N -ylC apache2 --sort: rss | awk '{SUM + = $ 8} SLUT {print SUM / 1024}'
Det oppnådde resultatet vil også bli representert i megabyte, og det vil vise oss ganske nøyaktig hvor mye RAM som forbrukes av resten av prosessene; i mitt tilfelle 800 MB. Med denne informasjonen kan vi foreta en generell beregning av antall samtidige forbindelser vi kan ha; Jeg beregner at vi ville oppnå ved hjelp av en veldig enkel operasjon.
(RAMTOTAL - RAM_RESTOPROCESOS) / RAM_POR_CONNEXIÓN
Med denne formelen i hånden, la oss forestille oss at vi har en datamaskin med 4 GB RAM, det vil si 4096 MB, og at datamaskinen vår har vist de ovennevnte resultatene; beregningen ville være:
(4096 - 800) / 10 = 329 samtidige tilkoblinger
Problemet med denne beregningen er at man er for ekstrem, siden den vil forbruke alt RAM (slik at serveren forbruker bytte), og i tilfelle du har en database, for eksempel MySQL eller andre, vil forbindelsene til den også forbruke RAM, som nummeret som oppnås kan kvalifiseres som et utopisk nummer. Derfor, for å frigjøre minnet for mulige tilleggsprosesser og også vurdere muligheten for at forbindelser til en database utføres, vil vi redusere antall tilkoblinger til 250.
Nå som vi har maksimalt antall samtidige tilkoblinger, må vi forberede Apache for å motta dette nummeret, noe som gjøres i konfigurasjonsfilen til denne samtalen. apache2.conf, som er vert i / etc / apache2.
Den aktuelle filen følger en struktur basert på moduler, hver med sitt tilhørende navn, men vi vil bare være interessert i en av dem, hvis navn er mpm_prefork_module. Modulen det gjelder har som standard følgende data:
StartServere 5 MinSpareServere 5 MaxSpareServers 10 Maks Klienter 150 Maks Forespørsler Per barn 0
Denne modulen har en rekke veldig viktige parametere, selv om det er en av dem som spesielt vil interessere oss, kalt MaxClients. Denne parameteren angir maksimalt antall samtidige tilkoblinger og skal endres til 250.
En detalj å ta i betraktning er at når en annen verdi enn standard er spesifisert i nevnte parameter, er det nødvendig å legge til en annen mer FØR denne. Denne parameteren kalles ServerLimit og setter grensen for tilkoblinger som serveren kan "holde" selv når den er utenfor grensen.
ServerLimit-parameteren må alltid være litt høyere enn MaxClients, og her, da det er lite handlingsrom, er det en grense på 270. Dette vil få modulen til å se slik ut:
StartServere 5 MinSpareServere 5 MaxSpareServere 10 ServerLimit 270 MaxClients 250 MaxRequestsPerChild 0
Nå vil det bare være nødvendig å starte Apache-tjenesten på nytt ved hjelp av kommandoen:
/etc/init.d/apache2 omstart
Med dette kunne vi allerede ha glede av vår optimaliserte webserver.
Hilsener.