Освобождение объектов прокси netty tcp - PullRequest
0 голосов
/ 13 июля 2020

Я пишу tcp-прокси, используя netty 4.1.x. Прокси-сервер должен поддерживать несколько тысяч активных сессий TCP одновременно. Иногда (когда прокси перезапускается) все клиенты будут пытаться повторно подключиться, и тогда их сеансы с целями должны оставаться активными в течение нескольких дней. В моем исходящем обработчике channelActive(..) метод I bootstrap и подключение к целевому прокси (на основе прокси-сервера Netty ):

@Override
public void channelActive(ChannelHandlerContext ctx) {
    inboundChannel = ctx.channel();
    String remoteHost = lb.getHost();
    int remotePort = lb.getPort();
    
    Bootstrap b = new Bootstrap();
    b.group(inboundChannel.eventLoop())
     .channel(ctx.channel().getClass())
     .handler(new SslOutboundProxyInitializer(remoteHost, remotePort, inboundChannel))
     .option(ChannelOption.AUTO_READ, false);
    ChannelFuture f = b.connect(remoteHost, remotePort);
    ...
}

Где: SslOutboundProxyInitializer передает обработчик ssl, обработчик журнала и обработчик SslOutboundHandler. SslOutboundHandler - это объект ChannelInboundHandlerAdapter, который просто считывает данные из входящего канала и записывает их в исходящий канал.

Вопросы:

  1. Правильный ли подход к созданию новый SslOutboundProxyInitializer, который сам по себе создает новый обработчик ssl, новый обработчик ведения журнала и новый SslOutboundHandler для каждого такого проксированного сеанса?
  2. Когда эти объекты будут освобождены? Я не видел, чтобы они освобождались после завершения сеанса. Стоит ли чистить их явно?

Спасибо

...