Denis
gjl yfuheprjq &
Denis
под нагрузкой ?
Denis
http://joxi.ru/BA0bdxYuJO61Om
Anonymous
http://joxi.ru/BA0bdxYuJO61Om
Ого, а что это такое?
Anonymous
Мониторинг с сервера?
Denis
keymetrics
Denis
pm2
Анатолий
из-за синхронного кода
Anton
Подскажите почему может быть высокий loop delay
любой блокирующий код тормозит луп. например, частый или большой JSON.parse
Анатолий
запросов/сек не много, по этому вариант с синхронным кодом наиболее очевидный
Denis
Ага, понял отказаться от jsonParse
Denis
там летит просто с запросом json который зашифрован еще
Анатолий
Строкой жсон обрабатывать будете?
Anton
Ага, понял отказаться от jsonParse
от него не откажешься, это итак самый быстрый способ распарсить жейсон
Denis
там еще base64
Denis
сначала декодится
Anton
там летит просто с запросом json который зашифрован еще
ничего не сделать в таком случае, добавляй больше нод.
Анатолий
твои ноды только и делают что парсят жсон и все?
Denis
да, вот на 2 проца когда было но примерно столько же rpm на каждый
Denis
все лдетело
Denis
нет они к монге обращаются
Denis
и редису
Denis
при этом запросы к монге кешируются в редис
Denis
cachegoose
Анатолий
и потом полученные данные не обрабатываются?
Анатолий
фор может
Анатолий
преобразования
Anton
твои ноды только и делают что парсят жсон и все?
3к рпс и жсон парса вполне достаточно чтобы загнуть луп, даже при савнительно небольшом жейсоне
Анатолий
не, это мелочи
Анатолий
хотя от жсона зависит
Анатолий
Если большой то вполне
Denis
да дело в том что на php разруливается на ура
Denis
эта же нагрузка
Denis
в ответ потом еще упаковыевыается
Denis
ага
Denis
на 4 проца 12к рпм
Denis
в районе 300 rps
Анатолий
нагрузка мизерная, дело в обработке данных
Anton
там не 3к рпс, а 3к рпм
ааа, не увидел. ну тогда жсон должен быть жирный довольно или сделано херновов что-то
Анатолий
а вообще нода за сколько отдает ответ?
Denis
там есть упаковка большого JSON
Анатолий
именно время обработки хттп запроса какое?
Denis
req.clientData = JSON.parse(encrypt( Buffer.from(req.body['X-Meta'], 'base64').toString(), key ));
Denis
и потом назад дата отдается так же
Denis
упаковывается
сomorsiс
X-meta большой?
Denis
dC1rantqbHstNT4jLX1qaWp9fWp9LTUtLSMten1jLTUtZ3t7fzUgIGtqYWZ8IWtqeSF8f25san96fGchfXogand7IGZha2p3IWd7YmMtcg==
сomorsiс
у тебя буффер возможно аллоцируется слишком часто
Denis
вот например
Denis
Угу понял
Denis
надо попробовать отказаться от шифрования
сomorsiс
не
сomorsiс
у тебя наверно там и так в base64 строка, не? (в req.body['X-Meta'])
сomorsiс
а, не
сomorsiс
фигню сказал
Denis
X-Meta = base64 строка
Анатолий
ну ты это, как найдешь причину скажи сюда, интересно :)
сomorsiс
encrypt - что за либа?
Denis
let encrypt = function (s, k) { let enc = ""; for (let i = 0; i < s.length; i++) { let a = s.charCodeAt(i); let b = a ^ k; enc = enc + String.fromCharCode(b); } return enc; };
Denis
xor
сomorsiс
в принципе можно сделать чтобы это работало с буффером
Denis
да я думаю отказаться
Denis
от шифрования
Denis
оно не к чему =)
Anonymous
Фирдавс Жабборов: А как прикрипит ajax на html страницу
Иван
V
Господа профессионалы, нужна Ваша помощь в осознании того, как правильно решить вопрос при использовании setTimeout и утечкой памяти. Исходные данные: 1. используется ssh2 модуль; 2. есть функция, которая должна выполняться "в рекурсии", т.е. как только закрывается соединение ssh - ждем 5 секунд и запускаемся на выполнение обратно. function Unlock() { console.log(process.memoryUsage().heapUsed); conn.on('ready', function() { console.log('Client ssh :: ready'); conn.shell(function(err, stream) { if (err) throw err; stream.on('close', function() { console.log('Stream :: close'); conn.end(); setTimeout(Unlock, 5000); }).on('data', function(data) { console.log('STDOUT: ' + data); }).stderr.on('data', function(data) { console.log('STDERR: ' + data); }).on('end', function (data) { console.log('Stream :: End'); }); stream.end(bC + '\nexit\n'); }); }).connect({ host: host, port: port, username: username, privateKey: require('fs').readFileSync(sertfilepath) }); } Тут явно мой косяк из-за нехватки знаний, но утечка памяти жуткая и приложение валится.
Max
упс
Max
извините, случайно
V
Походу сам решил задачу (возможно и не правильно, но вроде бы работает). Что сделал: 1. переместил создание ssh клиента внутрь функции Unlock, аля var conn = new Client(); 2. перед вызовом Timeout устанавливаю conn = null
Anonymous
Anonymous
Вот так как бы работает. в строке 90 берется поле rate из приджойненой таблицы vote и в поле "voiting" записывается среднее значение но из-за того что еще подключаю таблицу role (строка 95). sequelize меня просит писать в group : user.id и role.name я не понимаю зачем туда писать role.name не скажется ли это на результате ?
Anonymous
Вот если ни я ни никто не знает. Как тогда делать проекты ? ведь нельзя же просто предти и сказать - возьмите меня я хороший
Anonymous
запрос идет на таблицу user к ней джойнится таблицы role и vote (еще планирую и favorite) и получается вот такой json
Anonymous
Anonymous
и как бы все правильно меня просто смущает group : ["role.name"] в запросе ORM просит туда это писать, иначе ошибка
Vint
ОРМ ничего не просит, это БД просит. Возьми запрос из консоли и вызови его напрямую в БД.
Denis
http://joxi.ru/1A5Jb8YFndLqlr