Nikita
Anonymous
ага
Nikita
Вы не видели цмсок на sql, да? ;-)
Nikita
Пихаешь ему sqli такой, а там код шаблона хтмл страницы вываливается.
Nikita
На PL/SQL, если быть точным.
Nikita
Короче, не надо так делать ;-)
Gleb
Dreamerinnoise
Dreamerinnoise
пойду гуглить
Gleb
А ещё тут много запросов по RegExp'ам 😁
CherryTea
Шикарная картинка к посту в блоге: как не надо именовать функции
Nikita
Я ещё много анекдотов могу рассказать, как не надо делать.
Например, люди "деперсонализировали" копию боевой бд поудаляв там часть всего (делитами), а часть заменив (апдейтами). А потом передали на анализ базу в виде полного бинарного дампа.
Nurik
Ребят, всем привет. В общем есть баг, который непонятно как повторить.
Если кратко, то есть приложение на nodejs которое висит себе на 8080 порту, и обслуживает клиентов по socket.io или просто http.
Ну в общем, время от времени так случается, что после какого-то момента, приложение просто отказывается отвечать на все абсолютно http запросы.
Я логирую что пришёл запрос и вижу его, но ответа нет и соотвественно всё вылетает по таймауту.
Причём в БД нет никаких блокировок, я проверял. Ну и соответсвенно, по вебсокетам такая же херня. Что-то приходит, но ничего не уходит обратно.
Вопросы:
1. Вот как можно поймать эту ситуацию? Мне кажется что блокирую eventloop, но не знаю как проверить это.
2. Есть ли что-то что помогло бы определить проблему, если допустим, баг уже произошёл ? чтобы залезть внутрь эвентлупа и посмотреть что там прозошло ?
Nikita
Ребят, всем привет. В общем есть баг, который непонятно как повторить.
Если кратко, то есть приложение на nodejs которое висит себе на 8080 порту, и обслуживает клиентов по socket.io или просто http.
Ну в общем, время от времени так случается, что после какого-то момента, приложение просто отказывается отвечать на все абсолютно http запросы.
Я логирую что пришёл запрос и вижу его, но ответа нет и соотвественно всё вылетает по таймауту.
Причём в БД нет никаких блокировок, я проверял. Ну и соответсвенно, по вебсокетам такая же херня. Что-то приходит, но ничего не уходит обратно.
Вопросы:
1. Вот как можно поймать эту ситуацию? Мне кажется что блокирую eventloop, но не знаю как проверить это.
2. Есть ли что-то что помогло бы определить проблему, если допустим, баг уже произошёл ? чтобы залезть внутрь эвентлупа и посмотреть что там прозошло ?
1 — волшебный tcpdump, если трафика вменяемое количество.
2 — дебаггер, плюс process._getActiveRequests() / process._getActiveHandles() (не для продакшна, они с подчёркиванием не просто так, никто не гарантирует присутствие/совместимость этих функций в будущем).
Nurik
Nikita
Я бы начал с попытки воспрозвести баг.
Попробуй тупо записывать трафик и проиграть/посмотреть на него в районе зависания.
Nikita
Как будет воспроизводиться — запустил бы под отладчиком и начал бы ковырять (если сразу не будет ясно).
сomorsiс
сделай большую нагрузку
сomorsiс
может быстрее проявляться будет
Nikita
Nikita
А при реплее трафика воспроизводится баг?
Nurik
А вот, это я не знаю как повторить.
Nikita
tcpreplay
Nurik
А как быть с тем, что например, в трафике участвуют действия которые уникальны были на момент исполнения ? Например удаление заказа или закрытие заказа и так далее ?
Nikita
Ну сделай дамп базы перед запуском.
Nikita
И в тестовом окружении разверни его перед реплеем.
Nikita
Можно даже время отмотать назад, если там на время завязано.
Nurik
Отлично. Основную мысль думаю уловил. Завтра всё проверю. Спасибо.
Nurik
Nikita
Это вполне может быть какой-то конкретный кривой запрос, который вызывает ошибку, которую ты не отлавливаешь и всё встаёт колом.
Nikita
@nurik6 если таки получится воспроизвести — дальше можно дамп на сессии порезать, (хотя бы по айпишникам, например), чтобы найти нужную.
Nikita
Но я бы в первую очередь глазами посмотрел на запросы прямо перед зависанием и поискал странные.
Nikita
@nurik6, кстати, а с использованием памяти у твоего сервера что?
Nurik
Nurik
Nurik
Ilya
Привет. Что у вас спрашивали, когда вы устраивалить на позицию junior с node.js?
Node.js releases
Node v8.7.0 (Current)
https://nodejs.org/en/blog/release/v8.7.0
✙ galactico ✙
А когда LTS?
Алексей
LTS еще 7ой нет
сomorsiс
и не будет
Paul
После 17-го они посмотрят можно ли будет воткнуть 6.2 и там решат про сроки LTS
Paul
Потому что сейчас 8.7 медленнее чем 8.6 из-за известных событий
https://github.com/nodejs/node/pull/15762#issuecomment-335100061
Anonymous
парни, на ноде соц сеть можно сделать?
сomorsiс
делай
Anonymous
делай
спс, а норм если я буду делать без всяких рекатов ангуляров и вьюев? на жиквари
сomorsiс
подумай сначала над архитектурой
Anonymous
прост везде слышу что делать с жиквари зашквар
Anonymous
в принципе это все равно клиент, все равно вся инфа будет на серваке обрабатываться
сomorsiс
а соц сеть тут зачем? или требования?
Anonymous
Anonymous
Алексей
Алексей
я думаю, к весне сделаешь свою соц сеть
Алексей
https://developer.mozilla.org/ru/docs/%D0%A1%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C/CORS
Anonymous
так и сделаю
Anonymous
еее. ща на вьюшке заговнокодю.
астарожна
Cenator 🐈
Cenator 🐈
Да нет же, у них разные предназначения.
Cenator 🐈
Если много форм обрабатывать - то вью. Для остального реакт.
Cenator 🐈
Хендлеры повсюду. Во вью это за тебя сделано.
Cenator 🐈
В реакте код чище, хоть его и больше
Cenator 🐈
Не надо учить сам реакт, чтобы понять код на нем
Cenator 🐈
Вью же несет кучу своего синтаксиса
Anonymous
а какими библиотеками вы пользуетесь для графиков?
Григорий
Привет всем, подскажите пожалуйста при использовании pm2 можно как то лог работы скрипта в файл вывести ?
Anonymous
пагхни, а какую дб использовать?
я монгу заюзаю. никто ж не против
ikasymov
ребята нету ли у sequelize такой херни как в джанге shell? в котором можно запросы делать на базу?
ikasymov
запарился создавать каждый раз файл один и там делать запрос
Anonymous
ikasymov
ikasymov
крутой ты
ikasymov
скинул доку:D