PDA

Bekijk Volledige Versie : Criminals the game



ikkeweer
10/01/05, 18:31
Ik heb een vraag. Wat voor ervaring hebben jullie met criminals the game? Ik heb een vrij grote overgenomen met sponsoring. Maar sindsdien is mijn serverloed bijna ver 6 voudigd. Klopt het dat criminals de server zwaar belast?

Alvast bedankt

[edit]Vooral de mysql load stijgt!

PeterT
10/01/05, 18:33
Ja, crappy coding...

XBL
10/01/05, 18:52
Nogal ja. Wij hebben ook zo'n klant gehad. Op dit moment heeft hij bij vlagen nog erge belasting. Moet nog controleren wat er aan de hand. Maar wat mij betreft kan je die mensen met criminals missen als kiespijn.

Voorbeeld van een query die wij tegen kwamen, was een query die wat onzin selecteerde uit dik 80.000 records en hier in php een berekening maakte. En dat dan elke ~3 sec.

Jochem

Rick L.
10/01/05, 19:04
Zelfde verhaal hier. Een klant die op twee verschillende websites hetzelfde script draaide. Vooral de hoeveelheid SQL queries per seconde is het probleem.

ikkeweer
10/01/05, 19:12
Het spijt me voor die jongen dan maar ik ga geen dingen sponsoren waar andere klanten onder kunnen leiden. Nu is nog niet erg maar ver 6 voudigd stel dat hij keer crasht door zo'n stomme game. En ik wil ze toch goeie hosting leveren.

PeterT
10/01/05, 19:15
Query optimization doet wonderen.. echter daar gaat behoorlijk wat tijd in zitten.

ikkeweer
10/01/05, 19:16
ik heb hem op suspended gezet account en hij doet van serverload 6.43 loopt hij terug naar serveroad 0.01

Wido
11/01/05, 18:22
Kl*te spel, brengt je servers echt totaal over de zeik, vooral je SQL server is hier de dupe van.

Rampzalig programmeerd dat spel.

Eris
11/01/05, 18:58
Dat is niet het alle ergste. Het is ook nog uber populair :(

AlfaHosting
12/01/05, 00:20
Rampen :) en zeker als ze er nog eens is aan beginnen knoeien ...

ikkeweer
12/01/05, 00:22
ze hebben inderdaad nog keer allemala slechte aanpassingen gedaan ook :|

Flydesign.nl
12/01/05, 10:58
Heb er helaas ook ervaringen mee. Was een ander wargame, toen nog slecht gescript. Bij een wargame heb je veel load, omdat mensen veel pagina's opvragen. Ga maar na als je zelf een spel speelt, dan klik je ook heel snel door.

Gelukkig hebben we samen met de scripter verschillende dingen kunnen optimaliseren, hierdoor draait het spel nu vlekkeloos. Zelfs nu de populariteit elke dag stijgt.

Denk dat criminals ook een optimalisatie beurt nodig heeft, maar wie durft daar aan te beginnen? Ik heb de code eens bekeken, dat is echt de grootste zooi. Dus ik zou echt nooit het spel op m'n server willen hebben!

Rick L.
12/01/05, 11:35
Tja, maar je moet wat. Vaak weet je van te voren niet dat het spel gebruikt zal worden, daar kom je later pas achter...

timmeh
12/01/05, 12:33
Ik word er ook helemaal gek van, ik weet niet wat ik er mee aan moet. Tot nu toe stuur ik klanten een mailtje dat andere klanten last hebben van het script wat hun gebruiken. Ik raad ze aan om het script te stoppen, tot nu toe zijn ze er ook wel mee gestopt. Hopelijk blijft dit zo.

Thiaz
12/01/05, 19:20
Origineel geplaatst door Flydesign.nl
Heb er helaas ook ervaringen mee. Was een ander wargame, toen nog slecht gescript. Bij een wargame heb je veel load, omdat mensen veel pagina's opvragen. Ga maar na als je zelf een spel speelt, dan klik je ook heel snel door.

Gelukkig hebben we samen met de scripter verschillende dingen kunnen optimaliseren, hierdoor draait het spel nu vlekkeloos. Zelfs nu de populariteit elke dag stijgt.

Denk dat criminals ook een optimalisatie beurt nodig heeft, maar wie durft daar aan te beginnen? Ik heb de code eens bekeken, dat is echt de grootste zooi. Dus ik zou echt nooit het spel op m'n server willen hebben!

Zelf ervaring met dat soort games, met een ruime 100 (~1000 views/minuut), een load van 0.50 tot 1.00, waarvan ik zeker weet dat niet alles van httpd/mysqld afkomt.

Criminals is iets wat ik niet ken (link anyone?), klinkt als iets dat vooral voor de look gemaakt is.

yourforum
12/01/05, 19:24
Origineel geplaatst door Flydesign.nl
Heb er helaas ook ervaringen mee. Was een ander wargame, toen nog slecht gescript. Bij een wargame heb je veel load, omdat mensen veel pagina's opvragen. Ga maar na als je zelf een spel speelt, dan klik je ook heel snel door.

Gelukkig hebben we samen met de scripter verschillende dingen kunnen optimaliseren, hierdoor draait het spel nu vlekkeloos. Zelfs nu de populariteit elke dag stijgt.

Denk dat criminals ook een optimalisatie beurt nodig heeft, maar wie durft daar aan te beginnen? Ik heb de code eens bekeken, dat is echt de grootste zooi. Dus ik zou echt nooit het spel op m'n server willen hebben!

Bij criminals (en/of wargames) komt de hoge load amper door het aantal bezoekers maar vooral door het aantal cron files en de frequentie waarop ze die laten lopen. Bij ons was dat 1x per 5 minuten maarliefst 10 bestanden. Deze bestanden hadden een hevig aantal loopjes en mysql query's wat voor een load van 3 veroorzaakte.

De klant is inmiddels gewaarschuwd en de site ligt er af.

kilian
13/01/05, 00:10
Origineel geplaatst door yourforum


Bij criminals (en/of wargames) komt de hoge load amper door het aantal bezoekers maar vooral door het aantal cron files en de frequentie waarop ze die laten lopen. Bij ons was dat 1x per 5 minuten maarliefst 10 bestanden. Deze bestanden hadden een hevig aantal loopjes en mysql query's wat voor een load van 3 veroorzaakte.

De klant is inmiddels gewaarschuwd en de site ligt er af.

dat is natuurlijk onzin. Dat het nou over het algemeen kiddo's van 13 zijn die net met php beginnen wil niet zeggen dat iedereen dat doet. Ook de inzicht in sql en php (joins gebruiken bv, doe ik zelf ook niet :)) is vaak ook niet al te best. Waardoor soms nogal omslachtige situaties ontstaan. Ik hoorde bij mijn host vandaan ook zoiets, waar heb je nou in gods naam iedere 5 minuten een cron voor nodig?

Criminals zelf ik wel een tof spel (jammer dat er zoveel klonen van zijn) maar de code is werkelijk klote. Als je begint met de mysql_fetch_object en de select * te corrigeren draait het al een stuk sneller.

AlfaHosting
13/01/05, 00:35
Nochtans zijn er klanten die het zonder problemen laten draaien op onze servers terwijl anderen een load veroorzaken tot in china :)

smurf
13/01/05, 10:45
De meeste load werd tot voor kort bij ons ook veroorzaakt door zo'n game. Meestal gewoon die standaard code die ze draaien. Omdat die code dan nog redelijk 'publiek' was - ik veronderstel dat het criminals was, kende iedereen de locatie crons (persoon had ze niet beveiligd/ van naam veranders) en nadat de persoon ergens vijanden gemaakt had werden de crons vanop een hoop andere servers (10 servers die het bestand om de minuut opvroegen...) geladen. Resultaat: Server down door wargame. We gaan nu veel strenger optreden en dergelijke games meer in het oog houden.

full-Patrick
16/01/05, 14:23
een klant van mij die zoog echt extreem server load op (vooral mysql) ik heb heb gedwonden mysql_close(); onderaan te zetten en de load is toch al 50% terug gedrongen. ik heb zelf ook een wargame waar gemiddeld 200 online mensen zijn maar de serverload schommeld dan tussen de 0.05 en de 0.50 (eigen scripting)

yourforum
16/01/05, 14:51
dat is natuurlijk onzin. Dat het nou over het algemeen kiddo's van 13 zijn die net met php beginnen wil niet zeggen dat iedereen dat doet. Ook de inzicht in sql en php (joins gebruiken bv, doe ik zelf ook niet ) is vaak ook niet al te best. Waardoor soms nogal omslachtige situaties ontstaan. Ik hoorde bij mijn host vandaan ook zoiets, waar heb je nou in gods naam iedere 5 minuten een cron voor nodig?
Met 5 jaar ervaring in php, asp, jsp, VB en C denk ik toch dat ik wel enigsinds weet waar het aan ligt. En nee, dat zijn zeer zeker niet de bezoekers in onze gevallen. Een game met 2000 unieke bezoekers per dag kan prima draaien zonder problemen!

Het gebruik van mysql_result, mysql_close en GOEDE query's (dus niet SELECT * FROM) maakt een game al een stuk makkelijker om te draaien. Wij hebben nu een game lopen die géén load veroorzaakt (niets ongebruikelijks) en toch 4500 unieke bezoekers per dag heeft

Janson
16/01/05, 15:34
Hoe kan je Criminals Game overnemen?

kilian
16/01/05, 22:14
Origineel geplaatst door yourforum

Met 5 jaar ervaring in php, asp, jsp, VB en C denk ik toch dat ik wel enigsinds weet waar het aan ligt. En nee, dat zijn zeer zeker niet de bezoekers in onze gevallen. Een game met 2000 unieke bezoekers per dag kan prima draaien zonder problemen!

Het gebruik van mysql_result, mysql_close en GOEDE query's (dus niet SELECT * FROM) maakt een game al een stuk makkelijker om te draaien. Wij hebben nu een game lopen die géén load veroorzaakt (niets ongebruikelijks) en toch 4500 unieke bezoekers per dag heeft

Was natuurlijk geen aanval op je. Had het idee dat je de groep 'wargame' over 1 kant gooide. Ik bedoel hetzelfde te zeggen het 2e helft van je bericht. Veel problemen komen simpelweg door onwetendheid.

@Janson:
Ik denk dat je dan even contact op moet nemen met de wargame commissie om dat te regelen. :-D

DaRkDrEw
17/01/05, 17:15
Inderdaad, Criminials' script is nogal brak :r
Die jongen vroeg me eens te helpen met een nieuwe versie, nou die code van hem was echt onwijs brak, dat het werkte was een wonder :)

klasje.be
23/01/05, 13:09
Origineel geplaatst door full-Patrick
een klant van mij die zoog echt extreem server load op (vooral mysql) ik heb heb gedwonden mysql_close(); onderaan te zetten en de load is toch al 50% terug gedrongen. ik heb zelf ook een wargame waar gemiddeld 200 online mensen zijn maar de serverload schommeld dan tussen de 0.05 en de 0.50 (eigen scripting)
Quote 2:


De meeste load werd tot voor kort bij ons ook veroorzaakt door zo'n game. Meestal gewoon die standaard code die ze draaien. Omdat die code dan nog redelijk 'publiek' was - ik veronderstel dat het criminals was, kende iedereen de locatie crons (persoon had ze niet beveiligd/ van naam veranders) en nadat de persoon ergens vijanden gemaakt had werden de crons vanop een hoop andere servers (10 servers die het bestand om de minuut opvroegen...) geladen. Resultaat: Server down door wargame. We gaan nu veel strenger optreden en dergelijke games meer in het oog houden


Ik ben dus die klant, waarover het onderste bericht gaat.
Ik heb in mijn scripts echter OVERAL onderaan mysql_close(); staan.
Dus verbruik ikzelf 50% minder.
Verder probeer ik * zoveel mogelijk te vermeiden.
Toch krijg ik van mijn host volgende waarschuwing:
Indien de scripts binnen de 24 uur NIET verwijderd zijn of de load niet gereduceerd tot 1 a 3 wordt de gratis hosting voor klasje beeindigd.
Ikzelf gebruik echter niet zo veel en doe zoveel mogelijk om load te reduceren.
Voor 1000 spelers gebruik ik op 20 dagen slechts 8gig. Dit valt nog mee.
Er staan echter andere sites ook op de server, maar toch wordt 1 bepaalde site geviseerd.
Die andere site heeft gewoon een andere naam, en noemt zichzelf geen criminals.
Dus als men zo'n maatregels neemt, moet men niet iemand proberen te viseren die alles eraan doet om load te verlagen.

Hebben jullie nog exacte tips om load te verlagen.
Buiten: mysql_close(); onderaan elke pagina en select * te vervangen door expliciete "select naam1,naam2"

Want ik wil toch graag mijn hosting kunnen behouden!

Ps: nog een opmerking: ik heb meerdere subdomeinen waarop dingen van de site staan, maar mijn webhost heeft de backup functie niet geinstalleerd, bijgevolg kan ik zelfs geen backup maken (buiten manueel, en dat is veel) als ze mijn hosting verwijderen.
Ps2: ik ga nu mijn crons proberen te beveiligen, hebben jullie ook daar expliciete tips voor?

Groeten en alvast bedankt,
Koen Rens
www.klasje.be

Flydesign.nl
23/01/05, 13:41
"Ps2: ik ga nu mijn crons proberen te beveiligen, hebben jullie ook daar expliciete tips voor?"

Controleer op de host, als de aanroep komt van de server zelf (dus de cron) doe je de handelingen, anders stuur je de aanroep door naar je spel en voer je de handelingen niet uit. Kijk in de $_SERVER variabele voor de mogelijkheden om dit te controleren.

Al gedacht aan het cachen van gegevens? Als 10x iets uit de database gelezen wordt, en je hebt 10x een ander resultaat is dat nuttig. Maar 10x iets lezen en telkens dezelfde resultaten krijgen is vaak niet handig. Met cachen doe je het volgende:
- Zodra de gegevens in de database aangepast worden verwijder je een bestand van de server
- De eerste aanroep die ontdekt dat het bestand niet bestaat haalt het uit de database, verwerkt het tot html en slaat dat op in een bestand
- De aanroepen die het bestand vinden gebruiken rechtstreeks dat bestand.

Deze manier scheelt tijd voor het ophalen uit de database en het verwerken naar html. Dit is natuurlijk alleen nuttig bij iets wat op (bijna) elke pagina weergegeven wordt. Denk aan top10 posters.

Succes ermee.

klasje.be
23/01/05, 13:45
Cachen is idd zeer handig, hoewel ik niet weet hoe ik er technisch gezien aan moet beginnen.
+ Het feit dat bij een spel, gegevens niet lang hetzelfde blijven.
En er zijn niet veel pagina's waarin hetzelfde wordt aangeroepen...

Groeten en BEDANKT,
Koen Rens
www.klasje.be

klasje.be
23/01/05, 16:38
Ik dacht de crons te beveiligen via $_SERVER['HTTP_REFERER'], maar deze crons worden vanuit de config file ingeclude.
Bij includes heb je geen referers.

echo $_SERVER['DOCUMENT_ROOT'];
echo $_SERVER['PHP_SELF'];
echo $_SERVER['REQUEST_URI'];
echo $_SERVER['HTTP_HOST'];
echo $_SERVER['HTTP_REFERER'];

Geen enkel van deze variabelen kan kijken van waaruit iets geinclude wordt.
Ik heb het nu zo gedaan:
een wachtwoord in de config, deze roept nadien de cron aan, in de cron kijkt men of het wachtwoord van de config klopt.
Zoniet: exit;

Is het zo veilig genoeg?
Dit is de enigste beveiliging waarmee ik denk ik kan kijken vanaf waar deze cron wordt geopend.

Ik heb voor de zekerheid ook nog dit ingevoegd:
if($_SERVER['HTTP_HOST']!="criminals.klasje.be")
exit;
Maar aangezien dat dit altijd klopt, maakt deze beveiliging denk ik niet veel uit.


Alvast bedankt,
Koen Rens
www.klasje.be

kilian
23/01/05, 16:48
irritante internal server errors!

joriz
27/02/05, 17:38
Zelf heb ik nu ook heel veel last van iemand die Criminals op de server draait. Normaal is de server load overdag rond de 2 a 3 maar nu is hij rond de 6 sinds die klant criminals draait.

Weet iemand of er ergens een verbeterde versie van criminals is te downloaden. Want een klant afsluiten is ook weer zowat.

kilian
27/02/05, 17:42
Origineel geplaatst door joriz
Zelf heb ik nu ook heel veel last van iemand die Criminals op de server draait. Normaal is de server load overdag rond de 2 a 3 maar nu is hij rond de 6 sinds die klant criminals draait.

Weet iemand of er ergens een verbeterde versie van criminals is te downloaden. Want een klant afsluiten is ook weer zowat.
Ik weet wel iemand die heel goed is in het verbeteren van criminals ;)

joriz
27/02/05, 17:56
Ik begrijp wat u bedoelt.

Eigenlijk wil ik de klant alleen maar wijzen waar hij een verbeterde versie kan downloaden. Aangezien ik verwacht dat die Criminal jochies de ballen van mysql en php snappen en het met een handleiding in BREAAZAH taal hebben geïnstalleerd.

Ik wil hier eigenlijk zo min mogelijk geld en tijd in stoppen en alleen maar kort wijzen hoe ze het kunnen verbeteren.

Anders moet ik ze afsluiten of hun database ergens extern bij een gratis host laten draaien.

klasje.be
01/03/05, 20:13
1) Mysql_result() is toch niet goed voor dit spel?
Dit werkt slechter bij grote query's!
2) Het cachen van gegevens is toch bijna onmogelijk?
Bijna elke minuut zet er wel iemand geld op de bank of valt er iemand aan.
Elke keer veranderd dus de database.
Als je slechts 1x per 10 minuten je cache update, zit je spel met achterstand en val je soms mensen aan die al geen geld meer hebben...

3) Ik ben wel redelijk goed in het verbeteren van dit spel, ik ben er nu al 7 maand mee bezig, dus dat mag wel hé ;-)

4) Mijn spel staat op http://criminals.okill.nl
Ik ga binnenkort (enkele weken) een centrale database maken, en dan kan ik met verschillende mirror's werken om de load nog te verlagen.
Hoewel ik nu ook al een load heb van MAAR 1.


Groeten,
Koen

kilian
01/03/05, 20:22
Origineel geplaatst door klasje.be
1) Mysql_result() is toch niet goed voor dit spel?
Dit werkt slechter bij grote query's!
Groeten,
Koen

Dat is onzin. Mysql_Result haalt juist slechts 1 record op. Dus als je maar 1 cel nodig heb gebruik je deze. Bij meedere cellen Mysql_Fetch_Assoc.

Zeg ik dat goed zo?

klasje.be
01/03/05, 20:49
En mysql_fetch_object(); ?

Ps: in het spel moet je zelden slechts 1 record hebben, maar een hele rij van 1 persoon.
Daarom is dit voor dit spel toch slechter?

kilian
01/03/05, 21:15
Origineel geplaatst door klasje.be
En mysql_fetch_object(); ?

Ps: in het spel moet je zelden slechts 1 record hebben, maar een hele rij van 1 persoon.
Daarom is dit voor dit spel toch slechter?

nee, onzin.

Met Fetch_Assoc() worden de gegevens in een array geduwt, netzoals bij fetch_Row(). Het verschil met Fetch_Object() is dat een object meer geheugen in beslag neemt.

Als je meerdere gegevens moet hebben kan je, volgens mij, beter Mysql_Fetch_Row() nemen, deze neemt altijd maar een rij in tegenstelling tot de anderen (excluding .._result() ) Die je gewoon in een while lusje kan zetten.