Bekijk Volledige Versie : Zelf doen of laten hosten?
Ik heb deze vraag al bij een andere nieuwsgroep gepost maar geen reactie
gekregen. Vandaar nu nog eens:
Dit is het probleem:
Ik heb 2 servers op het internet, beiden met een 100 Mbit verbinding,
(11 Mbyte per seconde) 2,6 Ghz Celeron en 512 Mb RAM, Fedora Core 3, Apache.
Ik wil hier een heel simpele webpagina op zetten waar men een naam en
nog wat gegevens kan invoeren ten behoeve van een gratis abonnement op
een nieuw elektronisch tijdschrift. Via PHP wordt dat dan opgeslagen in
PostgreSQL. Technisch een fluitje van een cent.
Het zou echter kunnen zijn dat daar in sommige media nogal wat aandacht
aan besteed gaat worden en dat zou betekenen dat er in een hele korte
tijd heel veel bezoekers komen. Denk aan 100.000 bezoekers op een dag.
Hoeveel gelijktijdige bezoekers kan zo'n server dan aan? Wat als die
grens bereikt wordt? Kan ik bezoekers dan doorsturen naar de volgende
server? Kan ik op een of andere manier simuleren dat er 1000 mensen
tegelijkertijd die webpagina oproepen? En vervolgens op de submit-knop
klikken.
Het allergrootste probleem is dat er niets fout mag gaan. Als ik
aandacht krijg in de media (waar ik wel op reken) en mijn servertje ligt
plat kan ik moeilijk na een paar dagen weer aandacht vragen met het
bericht 'De webserver doet het weer'. Aan de andere kant heeft het geen
zin om zwaar in hardware te investeren omdat dit slechts een eenmalige
gebeurtenis is.
Is het misschien verstandig om deze webpagina dan een paar weken ergens
te laten hosten, en zo ja, wie kan dat dan? En heb ik dan 100% garantie
dat het ook werkt?
Vragen, vragen, vragen....
Groet,
Joachim
Jo <ttt@invalid.com> wrote:
> Ik heb deze vraag al bij een andere nieuwsgroep gepost maar geen reactie
> gekregen. Vandaar nu nog eens:
>
> Dit is het probleem:
>
> Ik heb 2 servers op het internet, beiden met een 100 Mbit verbinding,
> (11 Mbyte per seconde) 2,6 Ghz Celeron en 512 Mb RAM, Fedora Core 3, Apache.
>
> Ik wil hier een heel simpele webpagina op zetten waar men een naam en
> nog wat gegevens kan invoeren ten behoeve van een gratis abonnement op
> een nieuw elektronisch tijdschrift. Via PHP wordt dat dan opgeslagen in
> PostgreSQL. Technisch een fluitje van een cent.
>
> Het zou echter kunnen zijn dat daar in sommige media nogal wat aandacht
> aan besteed gaat worden en dat zou betekenen dat er in een hele korte
> tijd heel veel bezoekers komen. Denk aan 100.000 bezoekers op een dag.
>
> Hoeveel gelijktijdige bezoekers kan zo'n server dan aan? Wat als die
> grens bereikt wordt? Kan ik bezoekers dan doorsturen naar de volgende
> server? Kan ik op een of andere manier simuleren dat er 1000 mensen
> tegelijkertijd die webpagina oproepen? En vervolgens op de submit-knop
> klikken.
>
> Het allergrootste probleem is dat er niets fout mag gaan. Als ik
> aandacht krijg in de media (waar ik wel op reken) en mijn servertje ligt
> plat kan ik moeilijk na een paar dagen weer aandacht vragen met het
> bericht 'De webserver doet het weer'. Aan de andere kant heeft het geen
> zin om zwaar in hardware te investeren omdat dit slechts een eenmalige
> gebeurtenis is.
>
> Is het misschien verstandig om deze webpagina dan een paar weken ergens
> te laten hosten, en zo ja, wie kan dat dan? En heb ik dan 100% garantie
> dat het ook werkt?
>
> Vragen, vragen, vragen....
>
> Groet,
>
> Joachim
Veel specifieke antwoorden kan ik niet geven, daar ik zelf geen ervaring
heb met het hosten van veelbezochte sites (en zeker niet op eigen
servers).
Enkele tips alvast:
- indien je zelf wilt hosten, probeer dan gebruik te maken van bvb
lighttpd of Litespeed, deze heeft een veel lager verbruik dan bvb
Apache;
- indien voor een update van de database meerdere gegevens (tabellen)
tegelijk worden aangepast, kan het een goed idee zijn deze te locken bij
elke transactie, kwestie van geen data te verliezen wanneer er meerdere
requests tegelijk plaatsvinden. Dit hangt natuurlijk af van hoe uw
database is ontworpen;
- de site zelf zou ik zo licht mogelijk houden (niet te veel (grote)
afbeeldingen). Sommigen gebruiken voor afbeeldingen een aparte webserver
(soms met Boa) ipv Apache of lighttpd, zodat deze requests niet via de
main server moeten gaan;
Wat betreft PgSQL weet ik niet zeker of deze voor deze taak zwaarder zou
zijn dan MySQL... zo ja, dan is het misschien aangewezen een lichtere
RDBMS te gebruiken.
Enfin, ik weet niet of al deze tips van enig nut kunnen zijn, maar toch.
--
Dietrich <http://www.dmoerman.be/>
David Baakman
16/10/06, 21:40
Jo wrote...
> Ik heb 2 servers op het internet, beiden met een 100 Mbit verbinding,
> (11 Mbyte per seconde) 2,6 Ghz Celeron en 512 Mb RAM, Fedora Core 3, Apache.
>
> Ik wil hier een heel simpele webpagina op zetten waar men een naam en
> nog wat gegevens kan invoeren ten behoeve van een gratis abonnement op
> een nieuw elektronisch tijdschrift. Via PHP wordt dat dan opgeslagen in
> PostgreSQL. Technisch een fluitje van een cent.
>
> Het zou echter kunnen zijn dat daar in sommige media nogal wat aandacht
> aan besteed gaat worden en dat zou betekenen dat er in een hele korte
> tijd heel veel bezoekers komen. Denk aan 100.000 bezoekers op een dag.
>
> Hoeveel gelijktijdige bezoekers kan zo'n server dan aan? Wat als die
> grens bereikt wordt? Kan ik bezoekers dan doorsturen naar de volgende
> server? Kan ik op een of andere manier simuleren dat er 1000 mensen
> tegelijkertijd die webpagina oproepen? En vervolgens op de submit-knop
> klikken.
De laatste vraag is het belangrijkste. Het heeft op vantevoren niet veel
nut om te gaan beredeneren dat je beter Oracle kan gebruiken dan
Postgres, of Lighttpd ipv Apache, hier geldt maar 1 ding: meten is
weten!
Performance tests kan je uitvoeren met allerlei programma's. Twee open-
source opties zijn:
- JMeter
- OpenSTA
Met beide programma's kan je met je browser een script opnemen, evt.
aanpasssen (dynamische waarden uit responses halen, ivm tokens e.d.), en
daarna kan je dat script gebruiken om te testen. Het is uiterst
belangrijk om vantevoren te bedenken wat een realistische test is bij
een bepaalde doelstelling (1000 gelijktijdige bezoekers als je wilt
kijken of je site 100.000 bezoekers op een dag aankan is dat dus niet).
Op het moment dat je de test goed uitgevoerd hebt zijn er in prinicpe
twee mogelijkheden:
- De site voldoet aan de performance eisen, en dan ben je klaar om live
te gaan (oei, da's altijd eng; tip: zorg voor een fall-back plan op het
moment dat het allemaal toch niet helemaal gaat zoals verwacht)
- De site voldoet niet aan de performance eisen.
In dat geval moet je je afvragen of de algemene architectuur deugt (oh
nee, dat moet je eigenlijk doen voordat je uberhaupt begint met
ontwerpen/bouwen :)), en indien ja, de grootste bottlenecks zoeken
(pools, queries, locks, e.d.). Dan los je die op, en doe je een hertest,
net zolang tot je geen 'normale' bottlenecks meer kan vinden (zeg maar
vanaf het moment dat het 'duur' begint te worden om de laatste beetjes
performance te verbeteren). Wanneer je dan nog meer performance nodig
hebt kan je of op- of uitschalen.
Dit is een beetje een algemeen verhaaltje over hoe je het zou kunnen
aanpakken.
Groeten,
David
>
> De laatste vraag is het belangrijkste. Het heeft op vantevoren niet veel
> nut om te gaan beredeneren dat je beter Oracle kan gebruiken dan
> Postgres, of Lighttpd ipv Apache, hier geldt maar 1 ding: meten is
> weten!
>
> Performance tests kan je uitvoeren met allerlei programma's. Twee open-
> source opties zijn:
> - JMeter
> - OpenSTA
>
> Met beide programma's kan je met je browser een script opnemen, evt.
> aanpasssen (dynamische waarden uit responses halen, ivm tokens e.d.), en
> daarna kan je dat script gebruiken om te testen. Het is uiterst
> belangrijk om vantevoren te bedenken wat een realistische test is bij
> een bepaalde doelstelling (1000 gelijktijdige bezoekers als je wilt
> kijken of je site 100.000 bezoekers op een dag aankan is dat dus niet).
>
> Op het moment dat je de test goed uitgevoerd hebt zijn er in prinicpe
> twee mogelijkheden:
> - De site voldoet aan de performance eisen, en dan ben je klaar om live
> te gaan (oei, da's altijd eng; tip: zorg voor een fall-back plan op het
> moment dat het allemaal toch niet helemaal gaat zoals verwacht)
> - De site voldoet niet aan de performance eisen.
>
> In dat geval moet je je afvragen of de algemene architectuur deugt (oh
> nee, dat moet je eigenlijk doen voordat je uberhaupt begint met
> ontwerpen/bouwen :)), en indien ja, de grootste bottlenecks zoeken
> (pools, queries, locks, e.d.). Dan los je die op, en doe je een hertest,
> net zolang tot je geen 'normale' bottlenecks meer kan vinden (zeg maar
> vanaf het moment dat het 'duur' begint te worden om de laatste beetjes
> performance te verbeteren). Wanneer je dan nog meer performance nodig
> hebt kan je of op- of uitschalen.
>
> Dit is een beetje een algemeen verhaaltje over hoe je het zou kunnen
> aanpakken.
>
> Groeten,
> David
Laat ik voorop stellen dat het werkelijk heel erg eenvoudig is wat ik
wil maken. Naam, e-mailadres, leeftijd en geslacht invoeren en dat is
alles. Ik kan de database op een andere server laten draaien, die heb ik
al getest, die kan 4 miljoen nieuwe records per uur verwerken dus dat is
het probleem niet.
Ik heb enorm veel ervaring met zowel PHP als PostgreSQL dus zoiets maak
ik in een kwartiertje, geblindoekt als het moet. Ik denk overigens dat
ik iedereen die zich aanmeldt wel even een bevestigingsmailtje wil
sturen ter controle, maar dat kan ik op een andere server laten draaien
en gewoon sequentieel afhandelen op volgorde van binnenkomst. Het is
niet erg als dat wat langer duurt.
Ik begrijp niet waarom je schrijft dat 1000 gelijktijdige bezoekers niet
een juist uitgangspunt is. Ik bedoel met gelijktijdige bezoekers mensen
die in dezelfde seconde de webpagina opvragen. Ik kan 11 Mbyte per
seconde over de lijn sturen, (heb ik getest), de pagina zal (met
plaatje) maximaal 30 Kb groot zijn dus dat betekent (grof geschat) dat
ik 350 mensen per seconde kan bedienen. Dat zijn er 1,2 miljoen per uur,
bandbreedte heb ik dus voldoende.
De vraag is: Kunnen Apache en PHP het aan? Ik zal eens naar JMeter en
OpenSTA kijken.
Bedankt in ieder geval.
Groet,
Joachim
> Enkele tips alvast:
> - indien je zelf wilt hosten, probeer dan gebruik te maken van bvb
> lighttpd of Litespeed, deze heeft een veel lager verbruik dan bvb
> Apache;
Maar werkt dat net zo betrouwbaar als Apache?
> - indien voor een update van de database meerdere gegevens (tabellen)
> tegelijk worden aangepast, kan het een goed idee zijn deze te locken bij
> elke transactie, kwestie van geen data te verliezen wanneer er meerdere
> requests tegelijk plaatsvinden. Dit hangt natuurlijk af van hoe uw
> database is ontworpen;
Heel simpel. Een eenvoudige tabel met wat tekstvelden. Als de rust is
wedergekeerd converteer ik het wel naar de uiteindelijke database. Het
gaat er nu alleen maar om de ingevoerde data op te slaan. Ik zou zelfs
de data in een tekst-file kunnen wegschrijven als het moet.
> - de site zelf zou ik zo licht mogelijk houden (niet te veel (grote)
> afbeeldingen). Sommigen gebruiken voor afbeeldingen een aparte webserver
> (soms met Boa) ipv Apache of lighttpd, zodat deze requests niet via de
> main server moeten gaan;
Wat is Boa ?
>
> Wat betreft PgSQL weet ik niet zeker of deze voor deze taak zwaarder zou
> zijn dan MySQL... zo ja, dan is het misschien aangewezen een lichtere
> RDBMS te gebruiken.
Ik verwacht met PostgreSQL geen problemen. Ik heb vanmiddag al getest en
kan zo'n 4 miljoen nieuwe records per uur verwerken. Da's genoeg.
>
Groet,
Joachim
Dimitri Visser
17/10/06, 16:00
Hoi,
On Mon, 16 Oct 2006 22:33:33 +0200, Jo <ttt@invalid.com> wrote:
>Ik begrijp niet waarom je schrijft dat 1000 gelijktijdige bezoekers niet
>een juist uitgangspunt is. Ik bedoel met gelijktijdige bezoekers mensen
>die in dezelfde seconde de webpagina opvragen. Ik kan 11 Mbyte per
>seconde over de lijn sturen, (heb ik getest), de pagina zal (met
>plaatje) maximaal 30 Kb groot zijn dus dat betekent (grof geschat) dat
>ik 350 mensen per seconde kan bedienen. Dat zijn er 1,2 miljoen per uur,
>bandbreedte heb ik dus voldoende.
>De vraag is: Kunnen Apache en PHP het aan? Ik zal eens naar JMeter en
>OpenSTA kijken.
Je kunt je natuurlijk afvragen of Apache en PHP 1000 bezoekers in een
seconde aankunnen maar je hebt zelf al aangegeven dat je met jouw
bandbreedte maar 350 bezoekers in een seconde aankan. De vraag is dus
niet echt interessant meer.
Vervolgens geef je aan dat 350 bezoekers per seconde wel voldoende is
omdat dat er 1,2 miljoen per uur zijn. En je verwacht er 100.000 op
een dag.
Overigens betwijffel ik of Apache op een Celeron een 100 Mbit lijn kan
volmaken. Dat lukt zeker wel met een testfile van 100 MB maar niet met
filetjes van 30 KB.
Als die 100.000 mensen verspreid over 5 uur komen dan zit je op 5 1/2
bezoeker per seconde. Dat klinkt al een stuk beter.
Anders moet je het eens navragen op www.webhostingtalk.nl daar zitten
mensen met meer ervaring.
Groetjes,
Dimitri