C'est bon, le code du serveur tient la charge, maintenant c'est toujours un problème pour le bencher à fond, car c'est mon réseau internet à mon domicile et de mes serveurs client qui ne suit plus.
J'ai simulé 100 clients sur mes serveurs dédiés du Brésil, France, Taiwan qui envoient des faux joueurs sur le petit serveur Russe, tout fonctionne correctement, donc aucun soucis avec les autres serveurs.
Mon plus petit serveur : Russie
Type : VPS
RAM : 512Mo
CPU : 1 vCPU
Le plus gros serveur : France
Type : Physique
RAM : 16Go
CPU : Xeon 4 cores
NDrew a écrit :en quoi passer de 10 a 100 thread aiderait? ca augmente le nombre de changement de context non? mais ca fait rien de plus en terme de parallelisation?
Sur tous mes autres jeux en réseau j'utilise un seul Thread par jeu qui réceptionne les paquets UDP et qui rèpond.
Pour ce jeu, vu le nombre important de joueur que j'aimerai atteindre j'ai fais plusieurs tests durant 2 jours et surtout des nuits
1 process Java pour gérer les 100 clients :
Ca fonctionne bien pour 10 joueurs , mais au delà les clients reçoivent trop souvent des timeout, et ce font déconnecter
1 process Java qui réceptionne les paquets, avec un Thread de traitement et qui envoie les paquets:
C'est un poil mieux, des paquets UDP ne sont pas renvoyé assez rapidement
1 process Java qui réceptionne les paquets, avec un pool de 10 Threads pour le traitement + envoie des paquets:
Ca va encore mieux, mais encore trop de timeout sur mes clients
1 process Java qui lance 10 Threads écoutant chacun sur un port différent, avec pour chaque Thread, un pool de 10 Threads:
Plus aucun soucis de timeout sur mes clients, mais difficile de faire un bench avec plus de client, car c'est du coté de mes serveurs qui simulent les clients que ca ne suit plus.
Probleme avec Socket Unity:
Par contre, j'ai de trés gros doute sur les capacités des Socket UDP sous Unity, j'aimerai bien vos avis.
Je peux sans problème laisser tourner un Client UDP en Java sur mon ordi durant des heures je n'ai aucun probleme, 100% des paquets envoyés sont bien traité et je recois une réponse du serveur sur mon client.
Sous Unity, ca fonctionne environ 2minutes, puis je commence a perdre des paquets, puis finalement plus aucun paquet ne sont envoyé, puis apres quelques minutes, 5% des paquets sont bien envoyés, mais impossible de revenir a 100% sans arréter le programme Unity quelques minutes, ca me coupe meme mes connexions SSH sur mon serveur, comme si ma carte réseau n'en pouvait plus.
Edit:J'ai solutionné mon problème, c'était un problème sur mon code, c'est corrigé.
J'en ai profité pour changer le port du serveur si celui en cours d'utilisation ne répond plus.
https://youtu.be/UY_Na0dXxO0
Nouvelle version disponible si vous voulez tester par vous meme
http://zugsoft.com/games/xfighter/FightPC.zip
http://www.zugsoft.com/games/xfighter/fight.apk