Je fais un serveur et j'ai remarqué qu'il a une fuite de mémoire un peu étrange. Sur mon serveur, j'ai limité le nombre total de connexions qu'une adresse IP peut faire à 8. Cela fonctionne parfaitement.StreamLire ReadLine Memory Leak
Toutefois, lorsque j'utilise LOIC pour DoS mon serveur, je remarque que même s'il crée seulement 8 instances de la classe réseau, la méthode ReadLine de StreamReader occupe une grande partie de la mémoire.
J'ai vérifié à l'aide Console.WriteLine qu'aucune donnée ne soit effectivement reçu, il attend simplement à cette méthode. Et la mémoire augmente et remplit tout mon 16Go. Juste pour noter, il y a seulement 8 instances de cette classe d'une IP et comme je suis DoS'ing et non DDoSing il seulement vient jamais de mon IP (j'ai vérifié ceci).
Quelle est la cause de ce problème et comment puis-je le réparer?
EDIT:
Le code pertinent est:
string data;
Dictionary<string, string> variables = null;
try {
while (_listen) {
data = null;
while ((data = _reader.ReadLine()) != null) {
Si vous n'envoyez pas de retour à la ligne ('\ r \ n'), la ligne continuera à augmenter –
@LucasTrzesniewski Je ne choisis pas ce qui est envoyé. C'est une attaque DoS que je cours contre mon serveur. – Brodie
Je sais, ce n'était qu'une explication de la raison pour laquelle la chose consomme de la mémoire. J'impliquais que vous ne devriez pas utiliser 'ReadLine' si vous vous souciez des attaques DoS. –