16.11.2015, 15:42
|
Интересующийся
|
|
Регистрация: 01.11.2014
Сообщений: 14
|
|
Утечка памяти
Кто нибудь сталкивался с утечкой памяти простого 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);
Обновляю страницу, растёт расход памяти и не снижается. В чём может быть проблема и как пофиксить?
|
|
16.11.2015, 16:41
|
Аспирант
|
|
Регистрация: 09.11.2015
Сообщений: 94
|
|
попробовал твой код, никаких утечек не заметил.
Попробуй сменить версию ноды
|
|
16.11.2015, 16:56
|
Интересующийся
|
|
Регистрация: 01.11.2014
Сообщений: 14
|
|
да вроде сменил на 5.0.0, она же последняя версия?
а проблема в ОС может быть? у меня Ubuntu-14.04-amd64
Последний раз редактировалось Nogard7491, 16.11.2015 в 17:00.
|
|
16.11.2015, 17:03
|
Аспирант
|
|
Регистрация: 09.11.2015
Сообщений: 94
|
|
Не знаю, я не слежу. Сменить версию не значит обязательно сменить на последнюю. Я сомневаюсь, вообще то, что из-за ноды это происходит. У Вас, единственное, что подозрительно в коде, ф-ция createServer, она устарела, обычно рекомендуется http.Server. Но дело вряд ли в этом, конечно, это скорей всего просто алиас.
Возможно, утечки вызваны просто слишком частой перезагрузкой страницы. Попробуйте другую страницу, и сравните.
|
|
16.11.2015, 17:06
|
Интересующийся
|
|
Регистрация: 01.11.2014
Сообщений: 14
|
|
Сообщение от pnpquest
|
Не знаю, я не слежу. Сменить версию не значит обязательно сменить на последнюю. Я сомневаюсь, вообще то, что из-за ноды это происходит. У Вас, единственное, что подозрительно в коде, ф-ция createServer, она устарела, обычно рекомендуется http.Server. Но дело вряд ли в этом, конечно, это скорей всего просто алиас.
Возможно, утечки вызваны просто слишком частой перезагрузкой страницы. Попробуйте другую страницу, и сравните.
|
да, страницу я перезагружал часто, фактически зажал F5, но всё равно не должно быть утечки и сборщик мусора должен освободить память
|
|
16.11.2015, 17:17
|
Интересующийся
|
|
Регистрация: 01.11.2014
Сообщений: 14
|
|
посмотрел сейчас сколько памяти, за 2 часа с 13% занимаемой оперативки до 9.8% упало. видимо в сборщике мусора дело
|
|
16.11.2015, 17:54
|
Интересующийся
|
|
Регистрация: 31.10.2015
Сообщений: 29
|
|
Там незакрытые сокеты, по умолчанию, разрываются через 2 минуты. Не знаю, решили ли данную проблему в последних версиях, но было так. Где-то на хабре была статья по данному поводу и описывались способы принудительного разрыва (убивания) незакрытых сокетов.
|
|
16.11.2015, 18:03
|
Интересующийся
|
|
Регистрация: 01.11.2014
Сообщений: 14
|
|
ну 2 часа же прошло! сейчас переустановил Ось и запускаю код повторно, та же ситуация
|
|
16.11.2015, 18:07
|
Аспирант
|
|
Регистрация: 09.11.2015
Сообщений: 94
|
|
Сообщение от nick1m
|
Там незакрытые сокеты, по умолчанию, разрываются через 2 минуты. Не знаю, решили ли данную проблему в последних версиях, но было так. Где-то на хабре была статья по данному поводу и описывались способы принудительного разрыва (убивания) незакрытых сокетов.
|
Это вообще странная фигня, что в этой_вашей_ноде нельзя закрыть сокет без плясок с бубном.
А "проблему" эту решить вряд ли возможно, тут не в версии дело. Насколько я понимаю, у нас по умолчанию браузер создает соединение keep-alive, соответственно, нода не может закрывать сокет быстро, ей нужно ждать какое то время.
Последний раз редактировалось pnpquest, 16.11.2015 в 18:09.
|
|
16.11.2015, 18:09
|
Интересующийся
|
|
Регистрация: 01.11.2014
Сообщений: 14
|
|
я вот на Centos пробовал ставить, сейчас вернулся на Ubuntu опять. Обновил ноду до v5.0.0. Запускаю, обновляю страницу до тех пор пока потребляемая оперативная память не вырастит до 5%. После останавливаюсь и смотрю через top когда она освободится. Результата нет.
|
|
|
|