Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

28.09.2016, 09:36

Serverfrage

Hallo,

ich habe etwas programmiert, mit PHP werden Daten in eine ein Mysql Datenbank geschrieben und gelesen, das passiert pro sekunden jeweils ein bis zwei mal und diese Anfragen zur Mysql Datenbank kommen von jeweils 40-50 Benutzern gleichzetig.

Also pro Sekunde rufen 40-50 Benutzer die PHP Seite auf um Daten aus der Mysql Datenbank zu lesen oder rein zu schreiben.

Im Moment habe ich ein VPS Server gemietet und es laeuft XMAPP dort und die Benutzer rufen die PHP Seite ueber die IP Adresse vom VPS Server auf.

Ich wollte bei euch nachfragen, falls ich in Zukunft mehr Benutzer bekomme und die Leistungsanforderungen ja dann steigen, was fuer ein Server waere dann am besten und sollte man etwas anderes XMAPP benutzen damit man PHP und Mysql zur Verfuegung hat?

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

2

28.09.2016, 09:53

Ist es denn wirklich noetig das so oft abzurufen? 90 Aenderungen pro Sekunde kann doch kein User überhaupt geistig verarbeiten. Es koennte ja als Beispiel jeder Client seine Aenderungen fuer 10s cachen und dann ein Bulk Update machen.

3

28.09.2016, 11:47

Hallo, eigentlich ist es nicht wirklich noetig, aber ich weis auch nicht wie ich das anders aufbauen soll. Auf dem privaten PC von jeden User laeuft ein Windows Programm welches immer diese Anfrage sendet zum VPS Server. Das laeuft automatisch und wird deswegen so oft gemacht, weil jede Sekunde koennte es eine Veraenderung geben und diese Veraenderung muss jeder Benutzer auch schnell genug bekommen.

Ich weis das es Leute gibt die vielleicht sowas bauen koennen das erst dann an die Benutzer die Veraenderung gesendet wird, wenn eine neue Veraenderung vorhanden ist, aber ich habe nicht so eine Technik, kann sowas auch nicht selber programmieren und frae mich jetzt deswegen was ich mal spaeter machen soll, wenn immer mehr Benutzer dazu kommen, ob ich dann ein anderen Server brauche, ob XMAPP dann noch ausreicht oder was anderes benutzt werden sollte.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

28.09.2016, 12:10

Du hast TGGC falsch verstanden. Es ging ihm darum dass die eigenen Änderungen nicht sofort zum Server übermittelt werden sondern in einem etwas größeren Intervall. Wenn die Änderungen wirklich sofort angezeigt werden müssen dann ist das nun mal so. Überleg dir aber vielleicht noch mal ob das wirklich der Fall ist. Das hängt ja stark von deiner Anwendung ab. Aber vielleicht reicht es ja wirklich aus wenn Änderugnen bei anderen Benutzern erst nach einigen Sekunden angezeigt werden.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

5

28.09.2016, 12:25

Zitat

Ob XMAPP dann noch ausreicht

Grundsätzlich ist XAMPP (nicht XMAPP) nur eine Zusammenstellung von verschiedenen Softwarepaketen: Apache, MariaDB (MySQL wenn du eine alte XAMPP Version benutzt), PHP/PEAR, Perl, und ein bisschen mehr zur Verwaltung.

Apache ist dein Webserver, der PHP/Perl nutzt, um HTML zu generieren und an deine Clients zu liefern.
D.h., dein Nadelöhr ist entweder der Apache, deine PHP-Skripte, oder deine MariaDB.
Die DB würde ich in dem Fall erst einmal ausschließen.

Der Apache kommt auch mit einigen Tausend Requests/Sekunde noch gut zurecht, optional kannst du auf nginx umsteigen, der ist nochmal flotter unterwegs. Ansonsten sind irgendwann auch eventuell deine Skripte das Bottleneck.

Wenn du dann irgendwo in den Bereich kommst, in dem du mit einem Web- und DB-Server ausgelastet bist, solltest du dich um das Thema Loadbalancing kümmern, aber bis dahin ist es denke ich noch ein weiter Weg.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

Toemsel

Treue Seele

Beiträge: 310

Wohnort: OÖ

Beruf: Student und Programmierer

  • Private Nachricht senden

6

28.09.2016, 18:31

Vielleicht hast du die Möglichkeit eine direkte Verbindung per TCP aufzubauen. Dann könntest du direkt mit Interrupts arbeiten.
Quasi: Ein Client ändert etwas und der Server schickt einen Broadcast an alle Clients.

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

7

28.09.2016, 19:56

Ich denke da gibt es mehrere Level auf denen du die Performance verbessern koenntest.
Wie TGGC sagte, auf dem client cachen und gebatched an den Server senden.
Du kannst auch auf dem Server, statt in einer DB zu speichern die Daten im RAM speichern und regelmaessig in der Datenbank absichern.
Websockets waeren auch eine Alternative zum haeufigen pollen.
Wenn du pollst, solltest du sehr gut vom HTTP caching gebrauch machen damit die Datenbank nicht staendig gefragt werden muss ob etwas geaendert wurde: https://developers.google.com/web/fundam…p-caching?hl=en

8

28.09.2016, 21:32

Danke fuer eure Tipps.

So wie sich das anhoert koennte ich dann mit dem erst mal weiter machen was ich schon aufgebaut habe, wenn der Apache Server auch mit einigen Tausend Anfragen zurecht kommt.

Ich habe eigentlich vorgenommen falls mein VPS Server im Taskmanager mir anzeigt das die CPU zu weit ausgelastet ist beim Anbieter des VPS Servers einfach ein doppelt starken neuen VPS Server zu kaufen, ich weis aber natuerlich noch nicht ob das dann ausreichen wird.

Es handelt sich ebi meinem Spiel/Programm um eine Anwendung fuer Finanzmarkthandel, normalerweise handelt dort nur eine Person und alle anderen kopieren den Handel, eigentlich wuerde es deswegen auch ausreichen, wenn die Benutzer vom Server dann kontaktiert werden wenn es neue Handelsauftraege gibt, aber weil ich icht weis wie man sowas programmiert, habe ich es jetzt so programmiert das die Benutzer jede Sekunde neu nachschauen ob in der Datenbank ein neuer Handelsauftrag steht.

Ich denke mein Auftraggeber waere auch bereit fuer bessere Loesungen noch mehr zu zahlen und ich koennte mir vorstellen dann auch jemand von euch hier zu bezahlen wenn er mir helfen wuerde das zu verbessern.

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

9

28.09.2016, 21:38

Dann schau dir Websockets an. Das ist nicht wirklich schwierig, allerdings wirst du dich dann mit Javascript auseinandersetzen müssen.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

10

28.09.2016, 21:59

Danke ich werde mir das mal anschauen, da weis ich ja wenigstens schon mal in welche Richtung ich kucken muss.

Werbeanzeige