Netty — Мониторинг очереди EventLoop

Я использую сервер Netty для загрузочного приложения Spring. Можно ли каким-либо образом отслеживать размер очереди сервера Netty, чтобы мы знали, заполнена ли очередь и сервер не может принять новый запрос? Кроме того, есть ли какое-либо ведение журнала сервером netty, если очередь заполнена или не может принять новый запрос?


person user1578872    schedule 30.10.2020    source источник
comment
проверьте это - stackoverflow.com/questions/32933367/   -  person Chandan    schedule 07.11.2020


Ответы (1)


У Netty нет журнала для этой цели, но я реализовал способ найти ожидающие задачи и разместить некоторые журналы в соответствии с вашим вопросом. вот пример журнала из моего локального netty spring logging

вы можете найти весь код здесь https://github.com/ozkanpakdil/spring-examples/tree/master/reactive-netty-check-connection-queue

О коде, который сам по себе очень понятен, но NettyConfigure фактически выполняет настройку netty в среде весенней загрузки. в https://github.com/ozkanpakdil/spring-examples/blob/master/reactive-netty-check-connection-queue/src/main/java/com/mascix/reactivenettycheckconnectionqueue/NettyConfigure.java#L46 вы можете увидеть, сколько ожидающих задач в очереди. DiscardServerHandler может помочь вам сбросить, если лимит заполнен. Вы можете использовать jmeter для теста, вот файл jmeter https://github.com/ozkanpakdil/spring-examples/blob/master/reactive-netty-check-connection-queue/PerformanceTestPlanMemoryThread.jmx

если вы хотите обработать ограничение netty, вы можете сделать это, как код ниже

@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
    totalConnectionCount.incrementAndGet();
    if (ctx.channel().isWritable() == false) { // means we hit the max limit of netty
        System.out.println("I suggest we should restart or put a new server to our pool :)");
    }
    super.channelActive(ctx);
}

Вы должны проверить https://stackoverflow.com/a/49823055/175554 для обработки ограничений, и вот еще одно объяснение о isWritable https://stackoverflow.com/a/44564482/175554

Еще одно дополнение, я разместил приводы в месте http://localhost:8080/actuator/metrics/http.server.requests, это тоже неплохо проверить.

person özkan pakdil    schedule 07.11.2020