Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.04.2014, 16:00
Новичок на форуме
Отправить личное сообщение для Welder84 Посмотреть профиль Найти все сообщения от Welder84
 
Регистрация: 17.04.2014
Сообщений: 3

https.request - утечка памяти
Здраствуйте, не могу понять причину утечки памяти при использовании https, хотя тот же код с использованием http работает нормально

setInterval(function() { 
var options = { 
	  hostname: 'urlsite.ru',
	  path: '/'
	};

	var req = https.request(options, function(res) {
	  console.log('STATUS: ' + res.statusCode);
	  //console.log('HEADERS: ' + JSON.stringify(res.headers));
	  res.setEncoding('utf8');
	  res.on('data', function (chunk) {
		//console.log('BODY: ' + chunk);
	  });
	});

	req.on('error', function(e) {
	  console.log('problem with request: ' + e.message);
	});

	// write data to request body
	req.write('data\n');
	req.write('data\n');
	req.end();
}, 20);

Последний раз редактировалось Welder84, 17.04.2014 в 16:27.
Ответить с цитированием
  #2 (permalink)  
Старый 17.04.2014, 18:22
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

если каждые 20 миллисекунд запускать новый контекст запроса, то никакой памяти не хватит...
Ответить с цитированием
  #3 (permalink)  
Старый 17.04.2014, 18:44
Новичок на форуме
Отправить личное сообщение для Welder84 Посмотреть профиль Найти все сообщения от Welder84
 
Регистрация: 17.04.2014
Сообщений: 3

Прошу прощения, недоглядел, хотел упростить... вот тут все нюансы (ну на мой взгляд) учтены:

setInterval(function() {
	if(open_req < 5) {
		open_req++;
		
		var options = { 
		  hostname: 'siteurl.ru',
		  path: '/'
		};

		var req = https.request(options, function(data) {
			data.setEncoding('utf8');
			
			data.on('data', function(d) {
				
				data.destroy();
				data.removeAllListeners();
			});
			
		});
		
		req.shouldKeepAlive = false;
		
		req.setTimeout(6000, function() {
			console.log(':::::::::::TIMEOUT:::::::::::');
		});
		
		req.on('close', function(e) {
			open_req--;
		}); 
		
		req.on('error', function(e) {
		  console.error(e); 
		}); 
		
		req.end();

	}
},
1100
}
Ответить с цитированием
  #4 (permalink)  
Старый 18.04.2014, 11:23
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

Просто озвучьте задачу, которая перед вами стоит, а то есть уверенное ощущение, что вы забиваете гвозди микроскопом
Ответить с цитированием
  #5 (permalink)  
Старый 21.04.2014, 17:00
Новичок на форуме
Отправить личное сообщение для Welder84 Посмотреть профиль Найти все сообщения от Welder84
 
Регистрация: 17.04.2014
Сообщений: 3

Проблема решилась добавлением параметра agent:false

А задача - мониторить курс валюты на бирже (есть API, по нему получаю JSON).
Ответить с цитированием
Ответ



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

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


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