Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.11.2015, 15:42
Интересующийся
Отправить личное сообщение для Nogard7491 Посмотреть профиль Найти все сообщения от Nogard7491
 
Регистрация: 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);


Обновляю страницу, растёт расход памяти и не снижается. В чём может быть проблема и как пофиксить?
Ответить с цитированием
  #2 (permalink)  
Старый 16.11.2015, 16:41
Аспирант
Посмотреть профиль Найти все сообщения от pnpquest
 
Регистрация: 09.11.2015
Сообщений: 94

попробовал твой код, никаких утечек не заметил.
Попробуй сменить версию ноды
Ответить с цитированием
  #3 (permalink)  
Старый 16.11.2015, 16:56
Интересующийся
Отправить личное сообщение для Nogard7491 Посмотреть профиль Найти все сообщения от Nogard7491
 
Регистрация: 01.11.2014
Сообщений: 14

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

Последний раз редактировалось Nogard7491, 16.11.2015 в 17:00.
Ответить с цитированием
  #4 (permalink)  
Старый 16.11.2015, 17:03
Аспирант
Посмотреть профиль Найти все сообщения от pnpquest
 
Регистрация: 09.11.2015
Сообщений: 94

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

Возможно, утечки вызваны просто слишком частой перезагрузкой страницы. Попробуйте другую страницу, и сравните.
Ответить с цитированием
  #5 (permalink)  
Старый 16.11.2015, 17:06
Интересующийся
Отправить личное сообщение для Nogard7491 Посмотреть профиль Найти все сообщения от Nogard7491
 
Регистрация: 01.11.2014
Сообщений: 14

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

Возможно, утечки вызваны просто слишком частой перезагрузкой страницы. Попробуйте другую страницу, и сравните.
да, страницу я перезагружал часто, фактически зажал F5, но всё равно не должно быть утечки и сборщик мусора должен освободить память
Ответить с цитированием
  #6 (permalink)  
Старый 16.11.2015, 17:17
Интересующийся
Отправить личное сообщение для Nogard7491 Посмотреть профиль Найти все сообщения от Nogard7491
 
Регистрация: 01.11.2014
Сообщений: 14

посмотрел сейчас сколько памяти, за 2 часа с 13% занимаемой оперативки до 9.8% упало. видимо в сборщике мусора дело
Ответить с цитированием
  #7 (permalink)  
Старый 16.11.2015, 17:54
Интересующийся
Отправить личное сообщение для nick1m Посмотреть профиль Найти все сообщения от nick1m
 
Регистрация: 31.10.2015
Сообщений: 29

Там незакрытые сокеты, по умолчанию, разрываются через 2 минуты. Не знаю, решили ли данную проблему в последних версиях, но было так. Где-то на хабре была статья по данному поводу и описывались способы принудительного разрыва (убивания) незакрытых сокетов.
Ответить с цитированием
  #8 (permalink)  
Старый 16.11.2015, 18:03
Интересующийся
Отправить личное сообщение для Nogard7491 Посмотреть профиль Найти все сообщения от Nogard7491
 
Регистрация: 01.11.2014
Сообщений: 14

ну 2 часа же прошло! сейчас переустановил Ось и запускаю код повторно, та же ситуация
Ответить с цитированием
  #9 (permalink)  
Старый 16.11.2015, 18:07
Аспирант
Посмотреть профиль Найти все сообщения от pnpquest
 
Регистрация: 09.11.2015
Сообщений: 94

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

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

Последний раз редактировалось pnpquest, 16.11.2015 в 18:09.
Ответить с цитированием
  #10 (permalink)  
Старый 16.11.2015, 18:09
Интересующийся
Отправить личное сообщение для Nogard7491 Посмотреть профиль Найти все сообщения от Nogard7491
 
Регистрация: 01.11.2014
Сообщений: 14

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Утечка памяти в плагине для jQuery. TheWanderer jQuery 0 20.11.2013 16:22
Утечка памяти и борьба новым способом) KupueIIIKo Элементы интерфейса 6 03.08.2012 11:55
утечка памяти и window.open Vovan222 Events/DOM/Window 2 27.12.2010 19:19
утечка памяти при создании DOM MadLord Общие вопросы Javascript 2 16.08.2010 12:01
Как происходит утечка памяти в даном случае? Yazla Общие вопросы Javascript 2 09.11.2009 13:02