Утечка памяти
Кто нибудь сталкивался с утечкой памяти простого 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); Обновляю страницу, растёт расход памяти и не снижается. В чём может быть проблема и как пофиксить? |
попробовал твой код, никаких утечек не заметил.
Попробуй сменить версию ноды |
да вроде сменил на 5.0.0, она же последняя версия?
а проблема в ОС может быть? у меня Ubuntu-14.04-amd64 |
Не знаю, я не слежу. Сменить версию не значит обязательно сменить на последнюю. Я сомневаюсь, вообще то, что из-за ноды это происходит. У Вас, единственное, что подозрительно в коде, ф-ция createServer, она устарела, обычно рекомендуется http.Server. Но дело вряд ли в этом, конечно, это скорей всего просто алиас.
Возможно, утечки вызваны просто слишком частой перезагрузкой страницы. Попробуйте другую страницу, и сравните. |
Цитата:
|
посмотрел сейчас сколько памяти, за 2 часа с 13% занимаемой оперативки до 9.8% упало. видимо в сборщике мусора дело
|
Там незакрытые сокеты, по умолчанию, разрываются через 2 минуты. Не знаю, решили ли данную проблему в последних версиях, но было так. Где-то на хабре была статья по данному поводу и описывались способы принудительного разрыва (убивания) незакрытых сокетов.
|
ну 2 часа же прошло! сейчас переустановил Ось и запускаю код повторно, та же ситуация
|
Цитата:
А "проблему" эту решить вряд ли возможно, тут не в версии дело. Насколько я понимаю, у нас по умолчанию браузер создает соединение keep-alive, соответственно, нода не может закрывать сокет быстро, ей нужно ждать какое то время. |
я вот на Centos пробовал ставить, сейчас вернулся на Ubuntu опять. Обновил ноду до v5.0.0. Запускаю, обновляю страницу до тех пор пока потребляемая оперативная память не вырастит до 5%. После останавливаюсь и смотрю через top когда она освободится. Результата нет.
|
Часовой пояс GMT +3, время: 06:33. |