Probleme bei 10.000 Clienten?
-
Hi,
kann es zu Problemen führen, wenn ich select() auf bis zu 10.000 Sockets aufrufe? Wird das Script dadurch extrem verlangsamt oder kann es zu sonstigen Problemen kommen?
Mein Script soll nämlich einen Chat-Server darstellen, der eben alle User des ganzen Systems verwalten muss...MfG, Herr-Vorragend
-
-
Hm, bei mir ist FD_SETSIZE auf 64 gesetzt, d.h. ich kann nur 64 Clienten mit select() verwalten???
Was würdest du mir für eine Variante empfehlen? Gibt es irgendwo Beispiele für den Umgang mit besseren Varianten?
MfG, Herr-Vorragend
-
Du hast doch nen Link bekommen?!
-
ja schon, aber da stehen viele verschiedene Möglichkeiten. Und wenn ich z.B. bei Poller_select schaue, sind einfach nur ein paar Funktionien aufgelistet und ich kann nicht wirklich viel damit anfangen. Vielleicht hat ja jemand schon Erfahrungen damit gemacht und kann mir etwas empfehlen?
-
Sehr sinnvoll das ins Ansi C Forum zu posten.
Das kommt doch auf das Betriebssystem an.
Wenn das unter Windows laufen soll, dann mach dich mal über I/O Completition Port (IOCP) schlau. Das ist aber schwer zu programmieren...
Das mit der Beschränkung bei select() siehst du richtig.
Lies dir das durch: http://tangentsoft.net/wskfaq/articles/io-strategies.html
-
Hm, irgendwie ist das meiste davon für windows, oder?
Ich habe mir das Beispiel mit der Multi-Thread Lösung angeschaut, die Funktion CreateThread existiert doch eh nur unter Windows, oder? Und für IOCP habe ich auch nur Klassen für Windows gefunden...
Kennt jemand eine Klasse für Unix und wenn möglich auch Windows (ich entwickele unter Windows, das fertige Programm soll allerdings unter Unix laufen), die für das hantieren mit ca. 1.000 Usern ausgelegt ist?MfG, Herr-Vorragend
-
Natürlich gibt es CreateThread nur unter Windows, LOL!
-
Ja gibt es unter Unix überhaupt Threads? Gibt es denn nicht eine allgeimene Klasse für Probleme wie meines?
-
Warum guckst du dir nicht einfach mal an, wie ircds das gelöst haben wie z.B. der ircu:
-
(ich entwickele unter Windows, das fertige Programm soll allerdings unter Unix laufen)
schlechte idee...
-
feigling schrieb:
Warum guckst du dir nicht einfach mal an, wie ircds das gelöst haben wie z.B. der ircu:
die scheinen ja alles mögliche zu erlauben
engine_devpoll.c
engine_epoll.c
engine_kqueue.c
engine_poll.c
engine_select.c
-
ja, dachte ich mir auch ^^
Hat jemand schon mal RT++ ausprobiert? Scheint ja recht einfach anwendbar zu sein, wär das vielleicht was für mein Projekt?
http://www.risc.uni-linz.ac.at/software/rt++/MfG, Herr-Vorragend
-
willst du 1000 threads erstellen?
-
Hm, joa, ist das keine gute idee? Also irgendwo sehe ich keine andere Möglichket...
-
ich tendiere jetzt eher zu pthread, aber ist das denn keine gute Lösung? d.h. kann es zu Problemen bei 1.000 Threads kommen?