1 års fødselsdag for den nye server - og 7 for forummet

Alt omkring ubuntudanmark.dk
Brugeravatar
NickyThomassen
Admin
Indlæg: 3652
Tilmeldt: 5. mar 2010, 19:58
IRC nickname: nicky
Geografisk sted: 192.168.20.42

1 års fødselsdag for den nye server - og 7 for forummet

Indlæg af NickyThomassen »

Den nye server, som mildest talt ikke er ny mere, har nu kørt forummet i 12 hele måneder, ligesom at forummet i sig selv fylder 7 år.

Tilbage i februar skrev jeg om løbende statistik for serveren, og i anledning af den dobbelte fødselsdag, har jeg kigget lidt på tallene dengang og nu. Ligesom sidste gang, så
... har vi ikke et 100% klart overblik over hvordan hjemmesiden bliver brugt, kun hvordan webserveren bliver brugt. Grunden er, at det ikke er webserveren, som vi besøgende opretter forbindelse til, men derimod en cacheserver. Modsat webserveren, så belaster cacheserveren systemet en hel del mindre, men den fører ikke besøgslog. Derimod holder den styr på hvor mange procent af de indkomne forbindelser den kan betjene, og det ligger ret stabilt på 28% over en måned.

Modsat sidste gang, så er cache-tallet faldet til 22%, så de nævnte besøgstal skal i gennemsnit have lagt 22% på.

Normalt tager webserveren 22.500-25.000 hits om dagen, med undtagelse af de 2 sidste måneder, som har givet 30.000 for september og 31.000 for oktober. Sidste måned er ikke kun den største målt på hits, men på alt andet end antallet af besøg.

Indtil ubuntuuser42 d.22/09 fik lagt sin reklamepræsentation af Ubuntu på hjemmesiden, der uploadede webserveren 7.5-8.0gb data om måneden. Da det meste af september var gået, uploadede vi kun 9.95gb af den i den måned, imens vi for oktober uploadede hele 27.25gb af den, eller hvad der svarer til 465 kopier.

Under den travleste periode i sidste måned gennemførte webserveren 1.3 hits i sekundet, hvilket ikke er langt fra den maksimale hastighed, som webserveren kan arbejde med. I gennemsnit ligger spidsbelastningen i timen 19-20, imens timerne 5-7 er mindst. Det er stadig den side som viser indlæg i forummet, der bliver besøgt mest med sine 40%. Dernæst følger feed'et med 18%, og helt nede på 4% er kontrolpanelet på en 3. plads. Hver anden besøgende kommer direkte til siden, hvilket indikerer at et bogmærke er blevet brugt, imens Google kun giver 0.3% af de besøgende.

Den længste oppetid som serveren har klaret, sluttede i udgangen af februar efter næsten 93 dage. 2 gange efterfølgende har den været deroppe af.
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Re: 1 års fødselsdag for den nye server - og 7 for forummet

Indlæg af lath »

TitanusEramius skrev:Under den travleste periode i sidste måned gennemførte webserveren 1.3 hits i sekundet, hvilket ikke er langt fra den maksimale hastighed, som webserveren kan arbejde med. I gennemsnit ligger spidsbelastningen i timen 19-20, imens timerne 5-7 er mindst. Det er stadig den side som viser indlæg i forummet, der bliver besøgt mest med sine 40%. Dernæst følger feed'et med 18%, og helt nede på 4% er kontrolpanelet på en 3. plads. Hver anden besøgende kommer direkte til siden, hvilket indikerer at et bogmærke er blevet brugt, imens Google kun giver 0.3% af de besøgende.

Den længste oppetid som serveren har klaret, sluttede i udgangen af februar efter næsten 93 dage. 2 gange efterfølgende har den været deroppe af.


Interessant statistik - også selv man siger at der findes løgn, forbandet løgn, og så statistik. :)

Jeg kan ikke lade være at lægge mærke til at webserveren ikke kan tage mere end 1,3 hits/s - det er ikke meget, og må kunne gøres meget bedre.
Hvilken del er af webserver stakken er det der er langsomst?

Jeg programmerer i et programmeringssprog der hedder Go, der udmærker sig ved at det er nemt lave ting der kører parallelt.
PHP fortolkeren, som bruges af WordPress og phpBB3 (forum-software) udmærker sig ved at den kun kan behandle en ting af gangen, hvilket ikke er at softwaren kører i parallel.

I Go kan man nemt lave en webserver der kan håndtere 100 hit/s, og med performance forbedringer kan den komme op over 1.000 hit/s.

----

Optimalt set vil en moderne udgave af WordPress og phphBB3 være en Web Service med statiske HTML filer, CSS filer, og javascript filer, der indeholder kode der spørger webservicen om data, og så indsætter dem dynamisk ind på en HTML side.
Af hensyn til bots/web crawlers/web spiders, så kan web servicen også spytte rene HTML sider ud (=uden CSS og javascript), så bots kan levere information til søgemaskiner.

Den måde at lave tingene på er den moderne måde at lave tingene på.
90'er-metoden er at man indlejer f.eks. PHP kode inde i et HTML dokument. Det er den teknik som blandt andet WordPress bruger.

Den moderne metode minimerer internet trafikken, da den gør brug af internettets caching infrastruktur.
Det sidste led i caching infrastrukturen er browserens cache, som kan bruges hvis f.eks. en HTML side ikke har ændret sig. Det er blandt andet tilfældet i forum'et der grundlæggende ikke ændrer sig - det er kun indholdet, og det kan sagtens hentes, og opdateres med javascript.

Når man minimerer internettrafikken ved at skubbe noget af arbejdet over på browseren, så bliver hits/s raten højere.

/Lars

edit 1, 20131102 13:32
- typo rettet
Senest rettet af lath 2. nov 2013, 13:32, rettet i alt 1 gang.
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags
Brugeravatar
Martin Jørgensen
Indlæg: 406
Tilmeldt: 24. dec 2010, 15:58
IRC nickname: Martinjo84

Re: 1 års fødselsdag for den nye server - og 7 for forummet

Indlæg af Martin Jørgensen »

Nginx skulle kunne klare 10000 connections med 10mb ram
Brugeravatar
Kurt Christensen
Indlæg: 2246
Tilmeldt: 12. feb 2011, 13:22
IRC nickname: How to be me

Re: 1 års fødselsdag for den nye server - og 7 for forummet

Indlæg af Kurt Christensen »

TitanusEramius skrev:Under den travleste periode i sidste måned gennemførte webserveren 1.3 hits i sekundet, hvilket ikke er langt fra den maksimale hastighed, som webserveren kan arbejde med. I gennemsnit ligger spidsbelastningen i timen 19-20, imens timerne 5-7 er mindst. Det er stadig den side som viser indlæg i forummet, der bliver besøgt mest med sine 40%. Dernæst følger feed'et med 18%, og helt nede på 4% er kontrolpanelet på en 3. plads. Hver anden besøgende kommer direkte til siden, hvilket indikerer at et bogmærke er blevet brugt, imens Google kun giver 0.3% af de besøgende.


Kan man se om det er de samme der er nysgerrige eller om det er nye som er inde og kigge?
Når lejligheden byder sig.
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Re: 1 års fødselsdag for den nye server - og 7 for forummet

Indlæg af lath »

Martinjo84 skrev:Nginx skulle kunne klare 10000 connections med 10mb ram


Jeg mener faktisk at Go også kan 10.000 hits/s - jeg har bare ikke lige kunne finde en 10.000 reference og skrevet noget mere konservativt.
Firmaer der bruger Go webserveren+deres Go program i det samme Go program bruger nginx som frontend (giver bedre sikkerhed).

nginx er en god webserver
Forskellen til et Go program er at Go programmet både er webserver og den web applikation du vil køre server-side i den samme process.
Tilmed har en Go programfil ingen afhængigheder, så den skal bare uploades til maskinen den skal køres på og så startes.

/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags
Brugeravatar
NickyThomassen
Admin
Indlæg: 3652
Tilmeldt: 5. mar 2010, 19:58
IRC nickname: nicky
Geografisk sted: 192.168.20.42

Re: 1 års fødselsdag for den nye server - og 7 for forummet

Indlæg af NickyThomassen »

lath skrev:Hvilken del er af webserver stakken er det der er langsomst?

Det er uden tvivl den fil der viser indlæg, og som står for 40% af trafikken for hele hjemmesiden, som trækker ned. Den hedder viewtopic.php, og hvis man er til omstændig læsning, så kan kilden ses her:
http://ftp.phpbb-fr.com/public/cdd/phpbb3/3.0.9/viewtopic.php.source.html
(vi er på version 3.0.11, så den viste kilde er 2 mindre versioner bagud)

Serveren har én kerne på 1.65ghz, og på umodificeret phpBB-software, der kan serveren håndtere cirka 12 samtidige forbindelser på viewtopic.php, før load avarage begynder at stige som Mount Everest. I vores modificeret forum er indlæsningstiden cirka 600-800ms for en genganger, hvilket netop betyder at den besøgende har cache i sin browser (eller i Varnish'), og processoren er på ~90% belastning. Det giver cirka 2 samtidige forbindelser på viewtopic.php før load avarage kokser.

Jeg ved godt at load avarage ikke er en ret præcis måde at måle belastning på, men jeg kan ikke lige se hvordan man ellers skulle gøre i det her tilfælde.

Forsiden fx, udover Facebook-pluginnet, er en statisk Wordpress-side, og den klarer uden problemer en stor belastning. Måske ikke ligefrem 1000+ hits, men pænt derop af. Wordpress er installeret med et plugin som laver statiske sider, og dem kan Varnish lave en 100% cache af, og Varnish lægger man ikke lige ned. Vi prøvede ellers...

Jeg tror også at parallel programmering er vejen frem, omend på sin vis ville jeg mene at der allerede er parallelisme for Apache. Hver af Apaches worker processes starter deres egen PHP CGI-fortolker op, så hvis serveren havde flere kerner, så burde hjemmesiden skalerer tilsvarende. Det er med libapache2-mod-php5, og det har den ulempe, at hver process har fortolkeren i sig - lige meget om den skal bruges eller ej. En alternativ tilgang er med php-fpm (FastCGI Process Manager), som har en pulje af threads, der laver PHP CGI for webserveren.
Brugeravatar
NickyThomassen
Admin
Indlæg: 3652
Tilmeldt: 5. mar 2010, 19:58
IRC nickname: nicky
Geografisk sted: 192.168.20.42

Re: 1 års fødselsdag for den nye server - og 7 for forummet

Indlæg af NickyThomassen »

Martinjo84 skrev:Nginx skulle kunne klare 10000 connections med 10mb ram

Med alle mulige forbehold for provokation, flaming, trolling osv, så syntes jeg ikke at det giver den store mening at sammenligne programmerne på den måde, og i sidste ende er det ligegyldigt, hvis man ellers ved hvad man laver.
There isn’t big difference between Apache2 and Nginx in PHP context. Yes, Nginx can be much faster when delivering static content but it won’t speed up PHP execution.
http://systemsarchitect.net/apache2-vs-nginx-for-php-application/

Så med Varnish foran Apache, som i sig selv tilbyder en række af funktioner ingen af de 2 webservere har, så går det lige hurtigt for slutbrugeren. Derfor bør man vælge ud fra andre parametre end hastighed, og derfor bliver diskussioner af denne type ofte subjektive, for de handler i stedet om personlig smag.
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Re: 1 års fødselsdag for den nye server - og 7 for forummet

Indlæg af lath »

Jeg tror også at parallel programmering er vejen frem, omend på sin vis ville jeg mene at der allerede er parallelisme for Apache. Hver af Apaches worker processes starter deres egen PHP CGI-fortolker op, så hvis serveren havde flere kerner, så burde hjemmesiden skalerer tilsvarende. Det er med libapache2-mod-php5, og det har den ulempe, at hver process har fortolkeren i sig - lige meget om den skal bruges eller ej. En alternativ tilgang er med php-fpm (FastCGI Process Manager), som har en pulje af threads, der laver PHP CGI for webserveren.


Med flere kerner burde der skaleres lineært, muligvis sub-lineært, dvs at 2 cores giver en speedup, der er mindre end 2.

Jeg erkender at firmaer til enhver tid bare ville kaste mere hardware efter sådan en løsning, da at lave nyt der kan det samme i et andet programmeringssprog nødvendigvis betyder at der er nogen der skal programmere det. Da programmører er mennesker, der skal have brød på bordet, så koster de folk meget mere, end en hæld-mere-hardware-efter-problemet løsning

For lige at kunne få en ide om hvor meget der kan spares ved at bruge Go kan man kigge på dem her, der gik fra 30 til 2 servere.
Det er 2 fordi den ene er en backup server, der normalt laver ingenting - udover at stå til rådighed hvis den første server skulle gå i stykker:
http://blog.iron.io/2013/03/how-we-went-from-30-servers-to-2-go.html

---

Lidt nyttig information om Go (golang).

Go er meget forskellig fra programmer skrevet i C og C++ når det kommer til concurrency og parallelisme.
  • At køre ting i Go kræver kun et ord foran en funktion eller en metode: go, og så kører den funktion i en go rutine.
  • En go rutine er ikke en OS (kernel) thread, og heller ikke en OS process. Den er endnu mere letvægt i resurse forbrug.
  • Mange go rutiner bliver multiplekset ind i en kernel thread. På den måde kan man nemt køre en 50.000 go rutiner i en eneste kernel thread.
  • Man kan bruge semaforer ligesom i C og C++, men det gøres sjældent fordi det er så nemt at lave forkert. I stedet bruger man noget der hedder kanaler og et select udtryk, som kan matche de data du afsender fra et andet sted i programmet.
  • En go rutines stak fylder kun 4KB RAM (8KB RAM i den næste udkommer-snart Go version 1.2) til at starte med, og gror og formindskes i takt med behovet for mere eller mindre stakplads.
  • En kernel thread i et C program får normalt tildelt 10 MB stakplads, eller 2560/1280 gange mere RAM end en go rutine, der har en 4KB / 8KB stakplads til at starte med.
  • Et Go program kan have en kernel thread per CPU kerne, eller mindre, men altid mindst 1 kernel thread - ligesom i alle andre programmer.
  • Hvis man ikke gør noget andet vil programmet bruge det antal kerner som den kan finde i GOMAXPROCS miljøvariabelen, som bliver sat til 1 internt i programmet, hvis den ikke findes, eller hvis den findes og ikke er et positivt heltal.

/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags
Brugeravatar
NickyThomassen
Admin
Indlæg: 3652
Tilmeldt: 5. mar 2010, 19:58
IRC nickname: nicky
Geografisk sted: 192.168.20.42

Re: 1 års fødselsdag for den nye server - og 7 for forummet

Indlæg af NickyThomassen »

How to be me skrev:Kan man se om det er de samme der er nysgerrige eller om det er nye som er inde og kigge?

Sagtens, bare ikke med den statistik-software som jeg bruger på logfilerne. En automatisk løsning kræver normalt JavaScript, som det fx blev beskrevet i en af trådende om privatliv
https://ubuntudanmark.dk/forum/viewtopic.php?f=12&t=17765&start=15#p120318

Men man kan faktisk også kigge manuelt på logfilerne, da de indeholder en del oplysninger. En almindelige linje fra webserverens log har de her oplysninger:

Kode: Vælg alt

VÆRT IP DATO RESURSE STATUS STØRRELSE REFERER KLIENTSOFTWARE

Værten er den virtuelle host, som tager imod forbindelsen. Ubuntu Danmark har kun ubuntudanmark.dk og planet.ubuntudanmark.dk, så her vil det altid være en af dem. Ip og dato siger sig selv, imens resurse er det som klienten beder om, og kan både være HTML-sider, filer osv. Status er webserverens svar på om resursen kunne findes og sendes til klienten, og er fx "200 - OK", eller "404 - Ikke fundet". Størrelsen siger også selv, og referer er den side man kommer fra, imens klientsoftware kan være Firefox og den slags. De 2 sidste felter bliver frivilligt givet af klienten, og kan således mangle, eller være direkte forkerte.

På loggen fra i dag, hvis jeg kigger på den første klient der kommer ind fra Google, så er det til denne side
https://ubuntudanmark.dk/forum/viewtopic.php?f=36&t=15257

Dernæst følger diverse CSS- og JavaScript-filer (9 stykker), og efter cirka 2 minutter bliver denne side besøgt (også fra Google):
https://ubuntudanmark.dk//forum/viewtopic.php?f=3&t=14305

Derefter er der ikke flere besøg fra den klient.
Når CSS- og JavaScript-filerne skal hentes, så betyder det at klienten enten er førstegangsbesøgende, eller ikke har besøgt hjemmesiden i de sidste 30 dage, som er den cachetid vi har sat på de filer.
AJenbo
Admin
Indlæg: 20878
Tilmeldt: 15. nov 2009, 15:04
IRC nickname: AJenbo
Geografisk sted: Vanløse, København

Re: 1 års fødselsdag for den nye server - og 7 for forummet

Indlæg af AJenbo »

Statestik for hvor mange serveringer en web server kan levere er som nævnt dame lies. Det kommer oftest mere an på hardware og hvad der skal saveres, jeg har så gar set eksempler hvor nginx er langsommere end apache. Der er mange steder hvor jeg tror vi kan få bedre ydelse, pude med server konfiguration, men også med optimering af software. Oven i det er der også andre punkter hvor vi gerne vil udvikle siden og så skal man heller ikke glemme at alt hvad der laves skal kunne vedligeholdelse og ikke være mere kryptisk en at en anden udvikler udmildbart kan overtage opgaven, samt at vi er et meget lille antal personer der ligger sparsom fritid i det.
Brugeravatar
Christian.Arvai
Admin
Indlæg: 10725
Tilmeldt: 26. apr 2008, 19:27
IRC nickname: Christian_Arvai
Geografisk sted: Holeby - Lolland

Re: 1 års fødselsdag for den nye server - og 7 for forummet

Indlæg af Christian.Arvai »

Tillykke til jer alle med fødselsdagen.

Jeg har vist boet herinde længe nu, for hvis at i ser dette lille regnestykke, har jeg været med i ca 78% af forums levetid :D

Kode: Vælg alt

7*365=2555
5.5*365=2007,5
2007,5÷2555= 0,785714286 ~ 0.78
0.78*100=78%
Med venlig hilsen Christian

"We can only see a short distance ahead, but we can see plenty there that needs to be done." -- Alan Turing
Brugeravatar
NickyThomassen
Admin
Indlæg: 3652
Tilmeldt: 5. mar 2010, 19:58
IRC nickname: nicky
Geografisk sted: 192.168.20.42

Re: 1 års fødselsdag for den nye server - og 7 for forummet

Indlæg af NickyThomassen »

Sikker på det er den rigtige formel?
http://www.regneregler.dk/procent.jsp (afsnit 4)

Jeg får det "kun" til 72.75% af tiden :)
Brugeravatar
Christian.Arvai
Admin
Indlæg: 10725
Tilmeldt: 26. apr 2008, 19:27
IRC nickname: Christian_Arvai
Geografisk sted: Holeby - Lolland

Re: 1 års fødselsdag for den nye server - og 7 for forummet

Indlæg af Christian.Arvai »

TitanusEramius skrev:Sikker på det er den rigtige formel?
http://www.regneregler.dk/procent.jsp (afsnit 4)

Jeg får det "kun" til 72.75% af tiden :)

Nu er jeg ikke helt vågen på denne tid af dagen, men jeg prøvede lige at kontrollere regnestykket alligevel:

Kode: Vælg alt

2555×0,785714286 = 2007,50000073 ~ 2007,5

så det skulle passe :)

72,75% af 2555 er:

Kode: Vælg alt

2555×0,7275 = 1858,7625 ~ 1858
Med venlig hilsen Christian

"We can only see a short distance ahead, but we can see plenty there that needs to be done." -- Alan Turing