Salut tout le monde, je suis débutant en Java (j'ai les bases, je programme en plusieurs langages) et j'ai un serveur (Multi-thread, tcp) qui reçoit environs à peu après 900 Joueurs de connectés simultanément.

Tout va bien, le serveur supporte ça très bien (Sur une machine 64bits assez puissante) mais j'ai remarquer qu'au bout de quelques heurs après avoir lancer le serveur, souvent (très souvent) cette fonction finit par mettre trop de temps pour répondre et terminer. Cette fonction (send()) est la fonction qui réponds les joueurs (envoie les packets), c'est à dire la fonction la plus appelé, donc j'aimerais qu'elle soit optimisé le plus possible:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
public static void send(Personnage player, String packet)
{
	if(player.get_compte() == null) return;
	if(player.get_compte().getGameThread() == null) return;
	PrintWriter out = player.get_compte().getGameThread().get_out();
	if(out != null && !packet.equals("") && !packet.equals(""+(char)0x00))
	{
		packet = CrypterManager.toUtf(packet);
		out.print((packet)+(char)0x00);
		out.flush();
	}
}

Ce que j'ai remarquer après plusieurs tentative de débug du temps de réponses, c'est que:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
out.print((packet)+(char)0x00);
Et surtout surtout cette partie:


Mets trop de temps ! Des fois ça mets 6 secondes, des fois sa met 100 secondes, des fois 600, etc, je capte pas D'où peut venir le problème ? Comment corriger ça? Pourtant mon serveur (Windows) dépasse pas 10% de l'utilisation de son processeur! Besoin d’explications et d'idée merci.