Fuite mémoire dans le serveur Joram avec le controle de flux activé sur les sous-scriptions
Contexte pour mettre en évidence la fuite mémoire :
- Souscription durable ou pas sur un topic,
- Contrôle de flux entre le consommateur et le serveur activé,
- Consommation lente et messages de taille importante.
Dans ce contexte il y a rapidement accumulation de messages dans le client, la régulation de flux stoppe alors l'alimentation du consommateur et les messages s'accumulent alors coté serveur (souscription du proxy). Lors du redémarrage du flux un gros paquet de messages est alors transféré vers le consommateur ce qui entraine l'accroissement du buffer de l'objet NetOutputStream de IOControl.
Deux mécanismes sont en cause :
1 l'envoi non borné de tous les messages disponibles dans la souscription,
2 le protocole de communication entre les client et le serveur qui nécessite l'envoi préalable de la taille du message.
Le deuxième problème ne nécessite sans doute pas corrections si à terme la communication client/serveur repose sur AMQP.
[JORAM-22] created at 2012-03-06 16:10:59 by freyssinet, version JORAM_5_2_3