Нужно ли ставить поверх бэка nginx или голой жопой node express выставлять?
Давно надоело корявые конфиги правть, где тупо нет if/else. Да и вообще, для чего он? Ну модульки там всякие типа connlimit, но это и через iptables можно...что еще...ну логи...что еще может nginx что не может node/http/https модуль?
Нужно ли мне создавать микросервисы, если я делаю все один?
И еще вопросик по кодовой базе: часто одни и те же функции используются. Нужно в одной папочке все микросервисы хранить? А если по сети взаимодействуют, то нужно каждый микросервис обновлять по отдельности? И что еще получается нужен брокер сообщений или лучше на каждом МС поднимать свой http сервер(имхо так проще)?
Проблема в завершении запросов по таймауту Service Unavailable 503. В nginx просто решалось - запрос завершился - убился дочерний процесс со всеми потрохами (запросы к БД, сетевые, ресурсы и т. д.). В ноде, конкретнее в express, так не получится, там не создается отдельный процесс для каждого запроса. Промайсы тоже тривиально не отменяются, это нужно в каждом запросы пасти статус request\response и обрабатывать - геморойно, не вариант. Можно отменить сам запрос и отдать клиенту ошибку, но сам запрос асинхронный на сервере будет продолжать работу и после того как он просрется - выдаст ответ на завершенный http-запрос - в пустоту - зря получается пахал столько время
Варианты:
* Забить, но завершать сам http-запрос
* Забить полностью, не завершать http-запрос, не устанавливать таймауты и делегировать вопросы по времени каждому отдельному обработчику запросов. Тут опасаюсь ошибок в самих обработчиках, где-то может просмотришь, и будет он вечно висеть, накапливаться со временем, тем самым будет утечка памяти
* запускать в отдельном процессе каждый http запрос. Вариант интересный, но не встречал реализаций
В чем плюсы докера? Создать образ, нашинковать его барахлом уже настроенным (nginx, mongo, redis в моем случае) или ставить отдельно все? Удобно, если сервер новый настраивать, быстро... а если не так часто меняются то... Как и для чего вы его используете?
Хромеподобные браузеры(Opera, Chrome) внезапно перестали открывать 1 сайт (мой). Через FF, wget, другие программы нормально, HTTPS запрос отдает ответ и страницу
* ERR_TIMED_OUT * Через VPN открывает * После перезагрузки Windows некоторое время сайт открывается, но потом снова недоступен * DNS на cloudflare, но до него не доходит * Прокси смотрел - отключено * chrome://net-internals/#dns - сбрасывал * ping идет на cloudflare адрес - норм * Никаких антивирей нет, ничего дополнительного не устанавливал
Windows 10 Pro 22H2
UDP В настройках cloudflare нужно отключить TLS 1.3. ~РКН~
Самопроизвольно начал перезагружаться сервис через systemd. В логах просто «process got event SIGTERM 15» (там у меня обработчик стоит в коде на process.on() - логирует)
Stopping My server... Stopped My server. Started My server.
error-handler.js не трансформируется, не копируется в outDir. Если добавить type=module то он впихивается в bunlde, что мне не нужно. Хочу его отделить
Столкнулся с проблемкой, скрипт /bin/sh не «видит» тильду - home dir. Сам скрипт /usr/bin/ssh-copy-id
Запускаю так: supervisord (user=admin) -> test.js
Сам код на node:
execSync("sshpass -p "pass" ssh-copy-id bla bla", {shell: "/bin/bash"})
Если запускать напрямую в консоле через bash этот скрипт test.js, то нормально. Если через supervosord, то `/usr/bin/ssh-copy-id` - пишет ошибку «mktemp: failed to create directory via template ‘~/.ssh/ssh-copy-id.XXXXXXXXXX’»
Залез в исходники /usr/bin/ssh-copy-id, дописал проверочную строчку:
ls -la ~
directory ls: cannot access '~':
Если я напрямую в script.js пишу и запускаю также через supervisord
Во многих конфигуруциях/убунту, отключен рут доступ через ssh - заходишь под юзером и потом либо su без пароля, либо sudo с тем же паролем что и у юзера. В чем смысл защиты? Защита от дыр в самом ssh? Сам всегда включаю рут на серверах(дебиан). Все nginx etc под другими пользователями.
Столкнулся с таким казусом, что через ssh с подключенным TTY каждая новая строка вывода консольной команды дополняется \r\n вместо просто \n. Если заходить без TTY, то норм. Использую это в NODE, пакет node-ssh (он использует SSH2). Там в конфигах почитал есть параметр TTY: Pseudo-TTY settings, в котором есть какие то Terminal Modes ну и табличка с их описанием. Пока не пойму в ту ли я сторону копаю и какие флаги можно установить
Если ffmpeg запустить запись с домашнего компа - полоса появляется на пару сек и исчезает
Пробовал с 4 разных серверов (Европа, Армения)
Если rtsp_transport tcp - нормально, НО идет какое то «торможение», например махнешь рукой 5 раз, а на видео увидешь как будто 1 раз, типа FPS низкий
Если камера переходит в ночной режим (там подсветка и ч\б изображение), то полосы нет. Приходит рассвет и снова появляется ЗЕЛЕНАЯ падла полоса
FFMPEG самый последний билд 7.0.2-static
Пробовал с разных серверов, грешил на сеть
Если запускать на домашнем компе ffmpeg (win10), то полоса появляется но быстро пропадает, а на серверах постоянно
Пробовал перекодировать через libx264
Пробовал без звука (-an)
Пробовал в другой формат сохранять - mkv
-reset_timestamps 1
Ещё пробовал уже кучу всяких шаманских ключиков изгугленных - ничего не помогает, единственное чего удалось добиться - вместо зеленой полосы - серая была ))
Выполнил команду через ssh, отключился от сервера - команда завершилась. Как сделать такое?
Как я могу находясь в ssh убить все процессы, созданные конкретным подключением? Допустим у меня 3 подключения и в одном я хочу убить все процессы, а в других не трогать ничего
Все изгуглил, думал как то по простому можно сделать, приглось писать такой скрипт, который убивает все процессы порожденные ssh сессией. Смысл такой: ищется первый родительский процесс под названием ssh - получаю его PID, далее получаю все его дочерние PIDы - и их убиваю. Как вам такой подход? Пойдет или все таки можно более лаконично сделать. Смотрел pgrep - там можно убить по определенному tty, но он в моем случае не создается. Как иначе идентифицировать процессы принадлежащие конкретной ssh сессии по не понять
В nodejs есть фича - создания бинаря из скрипта, а также в этот бинарь можно втюхать другой бинарь, ну и вообще любые assets. В самом коде после компиляции я получаю этот «втюханый» банарь в виде ArrayBuffer - короче в памяти он. Как мне его запустить собственно и получить результат? Сохранять на диск и выполнять через spawn это понятно (но теряется single-executable, а хочется чтобы красиво было, хоть и файлик раздуется до 200 мб - но что в наше время эти 200 мегов), какие другие варианты?
Поднял wireguard через amnezia, работало шикарно, но вчера начались лаги, потери пакетов большие. С чего начать, может какие то буфера переполняются? Бегло посмотрел - нет кучи соединений, проц не нагружен, сеть 10Gbps. СпидТест показывает 30bmps через тунель, правда часто Socker Error. Куда смотреть, с чего начать? Сам хост пингуется хорошо.
Через другой тунель на этом же компе, но через другой сервер - работает хорошо
UPD
Перезагрузил docker container - проблема исчезла (