Дмитрий
19.08.2017
07:49:26
Аа, ну и важный момент, в SW нет доступа до localStorage, надо юзать indexedDb чтобы соеденить данные между страницей и воркером
Sheldhur
19.08.2017
07:49:57
последний вопрос в FCM\APNS шлется конекретно мессага, которая должна отобразиться или событие, чтобы воркер чекнул?
Дмитрий
19.08.2017
07:50:55
Шлеться объект с данным(прям текст сообщения, картинки и т.д.). Либо можно отослать пустое сообщений. Все эти данные будут доступны в обработчике события push
Далее либо вот как медуза запрашивать данные
Google
Дмитрий
19.08.2017
07:51:39
либо использовать то что пришло в push
Sheldhur
19.08.2017
07:52:22
а вы как делаете?
как лучше то?
универсальнее
Дмитрий
19.08.2017
07:53:32
У нас конкретный push это набор данных, никаких запросов на сервере(кроме статистики) мы не делаем
Sheldhur
19.08.2017
07:53:46
окай, спсб
Ilgiz
19.08.2017
07:57:13
Ребята у меня вопрос, если я запустил скрипт через крон и если этот скрипт после завершение своей цели не выходит с процесса то то это в итоге приведет к утечке памяти?при каждом последующем запуске этого скрипта кроном
Дмитрий
19.08.2017
07:57:20
@b101010 Советую посмотреть, просто ради понимания какие есть возможности:
1) https://onesignal.com/
2) https://viapush.com/
@ikasymov еще как
Ilgiz
19.08.2017
07:58:07
епт мать
Дмитрий
19.08.2017
07:58:15
У тебя будут запускатья каждый раз новый процесс
Ilgiz
19.08.2017
07:58:34
я уменя сервер ругается
FATAL ERROR: NewSpace::Rebalance Allocation failed - process out of memory
и что делать?
Google
Ilgiz
19.08.2017
07:58:59
в конце обьязательно добавить process.quite() ?
Дмитрий
19.08.2017
07:59:13
Ну брать себя в руки) Далее пишешь код так чтобы он сворачивался норм
Закрытие всех коннектов
Sheldhur
19.08.2017
07:59:19
процесс сожрал всю выделенную для него пямять
Дмитрий
19.08.2017
07:59:29
Завершение всех интервалов и т.д.
Sheldhur
19.08.2017
07:59:51
тебе при запуске скрипта надо указать, сколько нода может сожрать оперативы
Дмитрий
19.08.2017
07:59:58
Нода сама умрет если ты правильно ее приготовишь(завершишь все активные процессы, коннектц и т.д.)
Sheldhur
19.08.2017
08:00:01
по умолчанию 1.5гб вроде жрет
Ilgiz
19.08.2017
08:00:27
локально он у меня не умирает а стоит просто
пока сам не убил ctrl + c
Дмитрий
19.08.2017
08:00:53
Значит он что-то делает или что-то ждет
Ты не завершил что-то в логике или коннектах
Никита
19.08.2017
08:01:11
listen скорее всего
Ilgiz
19.08.2017
08:01:12
понятно
Дмитрий
19.08.2017
08:01:20
Лучше писать демонов + запуск через pm2
Ilgiz
19.08.2017
08:01:28
что за listen?
Никита
19.08.2017
08:01:58
а там крон
Дмитрий
19.08.2017
08:02:00
Я советую отучаться от крона, когда у тебя логика растет в кроне уже все не очень прозрачно
Никита
19.08.2017
08:02:03
все, извиняйте
Дмитрий
19.08.2017
08:02:47
А че там в коде то происходит?
Google
Ilgiz
19.08.2017
08:02:55
парсеры
Дмитрий
19.08.2017
08:02:57
Подключения к базе есть?
Ilgiz
19.08.2017
08:03:00
30 + парсеров
каждый час запускаю 30 + файлов
все не завершаются
сегодня смотрю ругается на память
Sheldhur
19.08.2017
08:03:32
Дмитрий
19.08.2017
08:03:40
Может
Ilgiz
19.08.2017
08:03:43
как убить процессы сейчас? что б не жрал данный момент
Дмитрий
19.08.2017
08:03:55
Нода умирает если ей больше нечего делать
Ilgiz
19.08.2017
08:03:59
sequelize
Дмитрий
19.08.2017
08:04:26
Если есть хоть любой малейший намек на работу демона, то нода не умрет
Sheldhur
19.08.2017
08:04:30
ой, выкинь это говно
если в нем действительно нет необходимости
Ilgiz
19.08.2017
08:04:50
код обычный такой
let value = await db.Parser.findOrCreate({
where: {
key: data.dataName
},
default: {
key: data.dataName,
value: urlList[0]
}
});
Sheldhur
19.08.2017
08:04:56
лучше нативным
Дмитрий
19.08.2017
08:05:52
1) Лучше нативный модуль имхо
2) Закрыть все коннекты к базам
3) Убедиться что все заканчивается без таймоутов и т.д.
Sheldhur
19.08.2017
08:06:21
конекты то зачем закрывать
имхо они как раз должны быть открыты
Google
Дмитрий
19.08.2017
08:06:32
Иначе нода не будет умирать
Ilgiz
19.08.2017
08:06:33
коннекты у меня вроде нет
Sheldhur
19.08.2017
08:06:40
особенно если пулл
Дмитрий
19.08.2017
08:06:42
У него php стайл)
Запустил, поработало, закрылось
Sheldhur
19.08.2017
08:07:13
так пусть нормальный демон сделает
я таки думаю что надо просто --max-old-space-size=8192 добавить
и жизнь наладится
дальше смотреть
Дмитрий
19.08.2017
08:07:59
Лучше писать демонов + запуск через pm2
Ilgiz
19.08.2017
08:08:02
Дмитрий
19.08.2017
08:08:15
Да что наладится то)
Sheldhur
19.08.2017
08:08:19
параметр при запуске скрита
Ilgiz
19.08.2017
08:08:29
0 * * * * node /home/user/project/file.js
куда добавить?
Дмитрий
19.08.2017
08:08:40
Если ты в кроне будешь запускать ноду которая тупо висит и ничего не делает то через сутки у тебя будет 48 таких нод
Sheldhur
19.08.2017
08:08:43
по памяти оверхед
Ilgiz
19.08.2017
08:09:13
которые весят
Google
Никита
19.08.2017
08:09:22
htop
Дмитрий
19.08.2017
08:09:22
Ну имхо лучше на потоки перейти и логики продумать, чем давать ноду 8 гб))
Ilgiz
19.08.2017
08:09:24
linux os
Дмитрий
19.08.2017
08:09:44
ps aux | grep node
Sheldhur
19.08.2017
08:09:46
Дмитрий
19.08.2017
08:10:44
И имхо 30+ парсеров это в крон не надо, пиши демона нормального, который не будет закрываться и который сам будет контролировать что за чем идет и как работает
Sheldhur
19.08.2017
08:11:11
а если просто из одного ведра в другое через сито перелить, тогда да
Дмитрий
19.08.2017
08:11:57
Согласен, но думаю если ситуаци такая как описывается, то проблема все таки не в данных)
Sheldhur
19.08.2017
08:15:20
process out of memory явно указывает, что оверхед по памяти на процесс
Дмитрий
19.08.2017
08:15:37
Это очевидно да)
Sheldhur
19.08.2017
08:15:50
т.ч. увеличение --max-old-space-size поможет, если у него php стайл
Дмитрий
19.08.2017
08:16:16
Нет, не поможет, пока скрипты не будут умирать)
Через неделю у него будет 48*7 запущенных нод
и так далее
Ilgiz
19.08.2017
08:16:40
может по конкретней скажете что мне делать?
Sheldhur
19.08.2017
08:16:45
gc же подчищает
а, у него процесс не умирает
Дмитрий
19.08.2017
08:17:05
Ага
Дошло да)
Вот именно что не умирает)
Sheldhur
19.08.2017
08:17:43
ну не