Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Утечка памяти (https://javascript.ru/forum/node-js-io-js/59559-utechka-pamyati.html)

Nogard7491 16.11.2015 15:42

Утечка памяти
 
Кто нибудь сталкивался с утечкой памяти простого http сервера?
var http = require("http");

http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}).listen(3000);


Обновляю страницу, растёт расход памяти и не снижается. В чём может быть проблема и как пофиксить?

pnpquest 16.11.2015 16:41

попробовал твой код, никаких утечек не заметил.
Попробуй сменить версию ноды

Nogard7491 16.11.2015 16:56

да вроде сменил на 5.0.0, она же последняя версия?
а проблема в ОС может быть? у меня Ubuntu-14.04-amd64

pnpquest 16.11.2015 17:03

Не знаю, я не слежу. Сменить версию не значит обязательно сменить на последнюю. Я сомневаюсь, вообще то, что из-за ноды это происходит. У Вас, единственное, что подозрительно в коде, ф-ция createServer, она устарела, обычно рекомендуется http.Server. Но дело вряд ли в этом, конечно, это скорей всего просто алиас.

Возможно, утечки вызваны просто слишком частой перезагрузкой страницы. Попробуйте другую страницу, и сравните.

Nogard7491 16.11.2015 17:06

Цитата:

Сообщение от pnpquest (Сообщение 396364)
Не знаю, я не слежу. Сменить версию не значит обязательно сменить на последнюю. Я сомневаюсь, вообще то, что из-за ноды это происходит. У Вас, единственное, что подозрительно в коде, ф-ция createServer, она устарела, обычно рекомендуется http.Server. Но дело вряд ли в этом, конечно, это скорей всего просто алиас.

Возможно, утечки вызваны просто слишком частой перезагрузкой страницы. Попробуйте другую страницу, и сравните.

да, страницу я перезагружал часто, фактически зажал F5, но всё равно не должно быть утечки и сборщик мусора должен освободить память

Nogard7491 16.11.2015 17:17

посмотрел сейчас сколько памяти, за 2 часа с 13% занимаемой оперативки до 9.8% упало. видимо в сборщике мусора дело

nick1m 16.11.2015 17:54

Там незакрытые сокеты, по умолчанию, разрываются через 2 минуты. Не знаю, решили ли данную проблему в последних версиях, но было так. Где-то на хабре была статья по данному поводу и описывались способы принудительного разрыва (убивания) незакрытых сокетов.

Nogard7491 16.11.2015 18:03

ну 2 часа же прошло! сейчас переустановил Ось и запускаю код повторно, та же ситуация

pnpquest 16.11.2015 18:07

Цитата:

Сообщение от nick1m
Там незакрытые сокеты, по умолчанию, разрываются через 2 минуты. Не знаю, решили ли данную проблему в последних версиях, но было так. Где-то на хабре была статья по данному поводу и описывались способы принудительного разрыва (убивания) незакрытых сокетов.

Это вообще странная фигня, что в этой_вашей_ноде нельзя закрыть сокет без плясок с бубном.

А "проблему" эту решить вряд ли возможно, тут не в версии дело. Насколько я понимаю, у нас по умолчанию браузер создает соединение keep-alive, соответственно, нода не может закрывать сокет быстро, ей нужно ждать какое то время.

Nogard7491 16.11.2015 18:09

я вот на Centos пробовал ставить, сейчас вернулся на Ubuntu опять. Обновил ноду до v5.0.0. Запускаю, обновляю страницу до тех пор пока потребляемая оперативная память не вырастит до 5%. После останавливаюсь и смотрю через top когда она освободится. Результата нет.


Часовой пояс GMT +3, время: 00:04.