Проблема: Когда я отправляю запрос после этого журнала (памяти), он показывает ошибку «зависание сокета (connResetException)». И сервер NodeJS перестает работать.
[1:0x330e8a0] 22724 ms: Mark-sweep 16.4 (25.2) -> 10.6 (29.9) MB,
3.3 / 0.0 ms (+ 0.1 ms in 2 steps since start of marking, biggest step 0.1
ms, walltime since start of marking 7 ms) (average mu
= 0.999, current mu = 1.000) finalize incremental marking
via task GC in old space requested
Архитектура: Я использую http-proxy
в качестве обратного прокси-сервера. Он включает единый вход (SSO) и отправляет его трафик в приложение.
Журнал ошибок на прокси-сервере (только в производстве - больше трафика)
/node_modules/http-proxy/lib/http-proxy/index.js:120
throw err;
^
Error: socket hang up
at connResetException (internal/errors.js:561:14)
at Socket.socketCloseListener (_http_client.js:380:25)
at Socket.emit (events.js:214:15)
at TCP.<anonymous> (net.js:658:12) {
code: 'ECONNRESET'
}
Поскольку зависание сокета происходит с МНОГИМИ случаями, я исследовал и экспериментировал с различными случаями. И я думаю, что проблема утечки памяти из моего узла может быть проблемой. node --trace_gc src/index.js
команды печатают 2 ~ 3 allocation failure
с на запрос.
Странные журналы
[1:0x449d780] 20364 ms: Scavenge 11.9 (13.2) -> 11.3 (13.2) MB, 3.2 / 0.0 ms \
(average mu = 0.961, current mu = 0.961) allocation failure
Исходный код
var apiProxy = httpProxy.createProxyServer();
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json())
app.use(passport.initialize({}));
app.use(passport.session({}));
app.use(session({
secret: 'secret',
resave: false,
saveUninitialized: true,}
));
app.get('/source*',
function(req, res, next) {
req.query.RelayState = req.url;
if(req.user) {
apiProxy.web(req, res, {target: xx});
Проблема: [http-proxy expressjs]
зависает в случайное время. Обычно это работает в течение двух дней, и сервер выходит 502 Ошибка. Мне нужно вручную перезапустить контейнер, чтобы восстановить его.
/node_modules/http-proxy/lib/http-proxy/index.js:120
throw err;
^
Error: socket hang up
at connResetException (internal/errors.js:561:14)
at Socket.socketCloseListener (_http_client.js:380:25)
at Socket.emit (events.js:214:15)
at TCP.<anonymous> (net.js:658:12) {
code: 'ECONNRESET'
}
Любая идея приветствуется ... пожалуйста, помогите 10