Le serveur a changé depuis l'époque où on était 80 dessus?
Je suis totalement contre une limite, même temporaire, au nombre de connectés.
Oui, le nombre d'enregistrements dans la base de donnée est bien plus important (2000 fois plus, pour être précis
) ca joue pas mal.
Les joueurs sont plus équipés, il y a plus de types d'objets différents, enfin plein de choses qui font que le serveur travaille plus qu'avant mais le temps de traitement de chaque instruction reçue des clients est supérieur à l'intervalle entre deux instructions, et c'est là le problème.
La chaîne complète c'est :
1. Client envoie paquet
2. Paquet traverse internet
3. Paquet est lu par le serveur
4. Paquet est interprété par serveur
5. Si besoin Paquet donne lieu à requête SQL sur serveur de base de donnée
6. Réponse est envoyée par le serveur
7. Réponse traverse internet
8. Réponse est lue par le client
9. Réponse est interprétée par le client
10. Réponse produit changement dans l'affichage sur le client
Il suffit que quelques éléments dans cette chaîne ralentissent un peu pour que le temps entre 1 et 10 soit trop important et qu'on ai ce sentiment trop pénible de "lag"
Les performances, ce n'est pas qu'une affaire de serveur, il faut travailler sur
tous les maillons de la chaîne.
Ce matin j'ai pris un serveur dédié chez un hébergeur Francais, nous allons faire quelques tests avec Destiny, il se peut qu'une journée nous fassions un "crash test" de performances sur le nouveau serveur, nous inviterons alors un maximum de gens à se joindre au test.
Ce nouveau serveur est là pour éliminer de l'équation les points 2,3,4,6 et 7 (tout ce qui est lié purement au serveur lui même, le temps de calcul quoi, ainsi qu'a la bande passante).
Si ces tests sur ces maillons ne sont pas assez concluants, nous pourront en déduire que les maillons interne à l'étape 5, c'est à dire sur le serveur de base de donnée sont problématiques.
L'étape 5 peut être divisée ainsi :
5.1. requête reçu par le serveur SQL
5.2. requête interprétée
5.3. Attente de la libération des ressources (
accès concurrent en écriture par exemple)
5.4. Execution de la requête
5.5. Récupération des résultats
5.6. Libération des ressources
5.7. Envoi des résultats au serveur T4C
Une erreur fréquente avec T4C, c'est les "
deadlock" c'est à dire, quand, d'une façon ou d'une autre, une table est verrouillée contre les accès concurrents, mais n'a jamais été libérée, pour X raisons aussi débiles que grotesques par le serveur T4C (ou par ODBC).