Задать вопрос
@Ablovka

Как найти утечку памяти в node js?

Решил освоить ноду, написал небольшой скрипт. После запуска уже через минуту хавает около 1.5гб ОЗУ.
var mysql = require('mysql');
var request = require('request');

var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '',
  database : 'items'
});

function pars(){
var startTimer = new Date().getTime();
console.log('Парсим');
 request({
        url: "https://skinsjar.com/api/v3/load/bots",
        json: true,
        timeout: 3000,
    }, function (error, response, body) {
		var elapsed = new Date().getTime() - startTimer;
		console.log("Спарсили за: "+elapsed+" мс.");
		if (body.items.length > 1){
		for (index = 0; index < body.items.length; ++index) {
			var price = body.items[index].price; // цена
			var name = body.items[index].name; // наименование
			var updateItem = "UPDATE ?? SET ?? = ? WHERE ?? = ?"; // шаблон запроса
			var inserts = ['items','jar',price,'name',name]; // значения для запроса
			connection.query(updateItem, inserts); // обновляем цены
		}
		console.log("Обновлено "+index+" предметов");
		var elapsed = new Date().getTime() - startTimer;
		console.log("Время выполнения: "+elapsed+" мс.\n");
		} else {
			console.log("Сайт недоступен");
		}
    });
}

setInterval(pars, 4000);
  • Вопрос задан
  • 485 просмотров
Подписаться 1 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
@vshvydky
Ты вообщевидел какой объем данных там? Ты обновляешь построчно, никакой потоковой вставки, каждый запрос генеришь через асинзронную функцию, вот и получаешь 1000 запросов с своими замыканиями или я даже боюсь предположить сколько
Ответ написан
Комментировать
@ArcadyZherdev
Возможно вызовы функции "pars" каждые четыре секунды "наползают" друг на друга..
Я бы юзал setTimeout() и вызывал его в колбэке ..по завершении апдейта базы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы