blob: 0c35a713ef67ee559b7ace0e8fa296272b20944f [file] [log] [blame] [view]
---
title: ShenYu Optimize
keywords: ["Optimize"]
description: performance optimization for Apache ShenYu
---
## Description
* This doc shows how to do performance optimization for Apache ShenYu.
## Time Consumption
* Apache ShenYu is JVM driven and processing time for a single request is nearly between `1-3` ms.
## Netty Optimization
* `spring-webflux` is one of dependencies of ShenYu, and it uses Netty in lower layer.
* The demo down below demonstrates tuning ShenYu by customizing params in Netty.
```java
@Bean
public NettyReactiveWebServerFactory nettyReactiveWebServerFactory() {
NettyReactiveWebServerFactory webServerFactory = new NettyReactiveWebServerFactory();
webServerFactory.addServerCustomizers(new EventLoopNettyCustomizer());
return webServerFactory;
}
private static class EventLoopNettyCustomizer implements NettyServerCustomizer {
@Override
public HttpServer apply(final HttpServer httpServer) {
return httpServer
.tcpConfiguration(tcpServer -> tcpServer
.runOn(LoopResources.create("shenyu-netty", 1, DEFAULT_IO_WORKER_COUNT, true), false)
.selectorOption(ChannelOption.SO_REUSEADDR, true)
.selectorOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT)
.option(ChannelOption.TCP_NODELAY, true)
.option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT));
}
}
```
* The `shenyu-bootstrap` module offers this class, you may modify it when benchmarking your app if necessary.
* You can get references of business thread model from [thread model](./thread-model)