Je veux développer un serveur TCP qui acceptera environ 5000 connexions client GPS J'ai actuellement développé un serveur TCP multi-thread simple qui est incapable de gérer même 100 clients. Il consomme environ 98% de CPU. Quel peut être le problème et quelle est la meilleure approche dans ce but?C# Serveur TCP pour la connexion de périphériques GPS
Répondre
Vous devez utiliser les API socket asynchrones. Un thread par connexion ne peut pas être mis à l'échelle.
Ceci nécessitera de réécrire des quantités significatives du code existant pour qu'elles soient asynchrones.
J'ai essayé avec des API de socket asynchrones. Mais le problème est le même. Il consomme beaucoup de cpu. Pouvez-vous me dire les raisons possibles? – user1041109
Il est possible que le traitement de vos messages soit lié à l'UC. Vous devez utiliser un outil de surveillance des performances pour déterminer la raison exacte. –
J'ai utilisé la trace de point pour surveiller l'utilisation du processeur et trouvé que Network.Read() prend plus de temps dans le mécanisme synchrone. Donc, j'ai introduit Thread.sleep avant cela. Maintenant, il ne prend pas beaucoup de CPU, mais comme le temps passe, le nombre de threads actifs augmente. J'ai essayé de fermer de force les threads en utilisant Abort(). Mais ça ne fait aucune différence – user1041109
- 1. C# recevoir des données de la connexion GPS sur TCP
- 2. Connexion TCP/IP unique pour connexion serveur à serveur
- 3. connexion serveur TCP reset
- 4. Connexion TCP/serveur TCP/IP persistante
- 5. Détecter les périphériques sur le réseau local pour la connexion client-serveur en C++
- 6. Périphériques GPS et programmation
- 7. C# Serveur TCP Aide
- 8. Code serveur C - Code client Java Problème de connexion TCP
- 9. Fermeture de la connexion TCP C++
- 10. Tampon serveur C# TCP
- 11. Maintenance de la connexion TCP
- 12. Connexion de plusieurs périphériques via RAPI2
- 13. Comment faire un pool de connexion TCP en C/C++
- 14. Utiliser la sécurité dans la connexion tcp
- 15. Connexion de périphériques Blackberry
- 16. C# TCP Serveur Répondre Packet Problème
- 17. Connexion de périphériques iPhone
- 18. Reprendre la même connexion TCP
- 19. Bases de la connexion TCP
- 20. connexion HTML5 websocket à C# socket tcp
- 21. Serveur et client TCP/IP C#
- 22. Serveur TCP (php)
- 23. La connexion TCP a perdu des problèmes dans C#
- 24. La connexion TCP a échoué
- 25. Durée de vie de la connexion TCP
- 26. C#: question de serveur TCP simple
- 27. connexion tcp pour obtenir IMEI
- 28. C# tcp problème de client serveur
- 29. Communication serveur TCP-Serveur
- 30. Java.net.SocketException connexion réinitialisation GPS
Nous ne pouvons pas déboguer ce problème à moins de nous en dire plus sur votre application. – nos
Multithreading est presque certainement la mauvaise réponse pour résoudre le [problème c10k] (http://www.kegel.com/c10k.html). – sarnold
Vous pouvez exécuter un profileur de CPU et voir où l'application passe la majeure partie de ce temps CPU de 98%. –