WN

WN (https://www.wn.se/forum/index.php)
-   Webbhotell (https://www.wn.se/forum/forumdisplay.php?f=13)
-   -   Cloud vps hos Glesys (https://www.wn.se/forum/showthread.php?t=1046559)

Björklund 2011-03-08 04:13

Citat:

Ursprungligen postat av KristianE (Inlägg 20396627)
Ofta får man sämre prestanda när man
slänger på fler kärnor.

Eh? Varför skulle man få det?

KristianE 2011-03-08 18:27

Ok, "ofta" var kanske överdrivet. Men det finns en hel del Best Practices om att man
i virtualiseringsmiljöer ska undvika vSMP så länge det är möjligt. Kör man applikationer
som verkligen kan hantera SMP på ett bra sätt så visst. Men att köra det "bara för att
man har Quad-core i sin hemma-burk" kommer göra mer skada än nytta.

Björklund 2011-03-09 05:40

Citat:

Ursprungligen postat av KristianE (Inlägg 20396772)
Ok, "ofta" var kanske överdrivet. Men det finns en hel del Best Practices om att man
i virtualiseringsmiljöer ska undvika vSMP så länge det är möjligt. Kör man applikationer
som verkligen kan hantera SMP på ett bra sätt så visst. Men att köra det "bara för att
man har Quad-core i sin hemma-burk" kommer göra mer skada än nytta.

Vilken applikation i servermiljö som drivs för internetrelaterade saker klarar inte av flera trådar? En LAMP-installation har inga problem med det.
Det är ju detta som är fördelen att kunna skala upp och ner sin prestanda.

Visst finns det undantag, men de är rejält sällsynta nuförtiden. Ingen vettig programmerare drar inte nytta av flera cores.

Jine 2011-03-09 11:03

Så du menar att du skriver trådad PHP?
Du är isåfall den första jag träffar på som gör det.

Grattis!

Björklund 2011-03-09 14:13

Citat:

Ursprungligen postat av Jine (Inlägg 20396841)
Så du menar att du skriver trådad PHP?
Du är isåfall den första jag träffar på som gör det.

Grattis!

Nej självklart inte... Jag kallar inte php-skript en applikation utan mer ett skript.

Apache/Lighttpd/whatever_webbserver kör trådat och drar igång flera trådar när den får mer än en samtidig http-request. Det gör alltså nytta med flera cores på en site som kör PHP, utan tvekan.
Är din uppfattning annorlunda?

Danielos 2011-03-09 14:53

Citat:

Ursprungligen postat av Björklund (Inlägg 20396860)
Apache/Lighttpd/whatever_webbserver kör trådat

Nej, normalt inte, apache2 tex. kör normalt preforkat, endast apache2 worker kör trådat och apache2 worker har inte stöd för mod_php5 i worker layout, för att php5 är inte trådsäkert, utan där måste man normalt köra fcgi isåfall, eller separat php-fpm. Nginx och lighttpd däremot drar nytta av fler cores, men inte så mycket som man tror, endast om du köra helt utan php5. Flaskhalsen ligger i php5 som inte utnyttjar cores in princip alls, endast php-fpm kan tänkas utnyttja fler cores. Googlar man lite så hittar man en del benchmark som påvisar mycket liten skillnad. Och man måste tänka på att 2 vps cores är inte samma som en dual core cpu på en separat maskin, dvs 2 maskinvaru cores är inte ekvivalent med 2 virtuella cores.

Björklund 2011-03-09 16:36

Citat:

Ursprungligen postat av Danielos (Inlägg 20396867)
Nej, normalt inte, apache2 tex. kör normalt preforkat, endast apache2 worker kör trådat och apache2 worker har inte stöd för mod_php5 i worker layout, för att php5 är inte trådsäkert, utan där måste man normalt köra fcgi isåfall, eller separat php-fpm. Nginx och lighttpd däremot drar nytta av fler cores, men inte så mycket som man tror, endast om du köra helt utan php5. Flaskhalsen ligger i php5 som inte utnyttjar cores in princip alls, endast php-fpm kan tänkas utnyttja fler cores. Googlar man lite så hittar man en del benchmark som påvisar mycket liten skillnad. Och man måste tänka på att 2 vps cores är inte samma som en dual core cpu på en separat maskin, dvs 2 maskinvaru cores är inte ekvivalent med 2 virtuella cores.

Sant, men grundfrågan är om en VPS blir snabbare genom att få fler cores.
Spelar ingen roll om det är worker eller prefork. Men fler CPU-kärnor kan den hantera fler samtidiga användare snabbare.

Eller hur?

Edit: Självklart blir det inte snabbare för en användare att köra ett php-skript med fler cores, den kör då bara på en enda core.
Men om du har 100 användare samtidigt som kör flera cores så skalar det ut på alla cores.

pelmered 2011-03-09 17:00

Att själva webbservermjukvaran inte drar någon nytta av flera cores spelar ju inte så stor roll i sammanhanget. I stort sett all beräkning sker ju i antingen (PHP-)scripten eller i databasen som båda är multitrådade(om man konfigurerar rätt) och drar stor nytta av flera cores.
Webbservermjukvaran skickar ju bara vidare alla requests till PHP-processerna och skickar sedan tillbaka HTML:en som scripten genererar. Därmed har jag svårt att tro att problemet sitter i själva webbservermjukvaran utan i scripten eller databasen som använder mycket CPU-resurser. Jag tror att man av andra anledningar tvingas lastbalansera mellan flera fysiska noder innan själva webservermjukvarans process blir flaskhalsen.

Björklund 2011-03-10 00:59

Citat:

Ursprungligen postat av ITisGood.se (Inlägg 20396893)
Att själva webbservermjukvaran inte drar någon nytta av flera cores spelar ju inte så stor roll i sammanhanget.

De drar nytta av flera cores. Vilken webbservermjukvara (som är korrekt konfigurerad) gör inte detta?

Citat:

Ursprungligen postat av ITisGood.se (Inlägg 20396893)
Webbservermjukvaran skickar ju bara vidare alla requests till PHP-processerna och skickar sedan tillbaka HTML:en som scripten genererar.

Precis, den skickar vidare till php-tolken som sen skickar tillbaka resultatet.
Får du in två requests samtidigt så klarar webbservermjukvaran att starta en ny php-process som samtidigt behandla båda två. Har du fler en cores kommer operativsystemet sprida de på var sin core.

Får du bara in en reqeust åt gången så spelar det ingen roll hur många cores du har då det inte går snabbare eftersom den då bara kör på en core.

pelmered 2011-03-10 12:31

Citat:

Ursprungligen postat av Björklund (Inlägg 20396972)
De drar nytta av flera cores. Vilken webbservermjukvara (som är korrekt konfigurerad) gör inte detta?

Precis, den skickar vidare till php-tolken som sen skickar tillbaka resultatet.
Får du in två requests samtidigt så klarar webbservermjukvaran att starta en ny php-process som samtidigt behandla båda två. Har du fler en cores kommer operativsystemet sprida de på var sin core.

Får du bara in en reqeust åt gången så spelar det ingen roll hur många cores du har då det inte går snabbare eftersom den då bara kör på en core.

Ja, det var ju exakt det jag syftade på...
Med "webbservermjukvaran" syftade jag inte på det som är PHP-relaterat eftersom det är moduler utan den mjukvara som hanterar requests från användare och skickar tillbaka svaret, precis som jag skrev.
Den hanteringen kommer troligen inte bli flaskhalsen.


Alla tider är GMT +2. Klockan är nu 12:34.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson