boomboomxx opened a new issue, #6018:
URL: https://github.com/apache/shenyu/issues/6018

   ### Question
   
   ### 运行环境
   1. 版本: 2.6.0
   2. 存储:MySQL 8.0.40
   3. 操作系统:CentOS 8 Stream
   4. JDK 17.0.1
   5. 单机单节点模式运行
   6. 单用户限制 如下:```
   core file size          (blocks, -c) 0
   data seg size           (kbytes, -d) unlimited
   scheduling priority             (-e) 0
   file size               (blocks, -f) unlimited
   pending signals                 (-i) 14510
   max locked memory       (kbytes, -l) 64
   max memory size         (kbytes, -m) unlimited
   open files                      (-n) 65536
   pipe size            (512 bytes, -p) 8
   POSIX message queues     (bytes, -q) 819200
   real-time priority              (-r) 0
   stack size              (kbytes, -s) 8192
   cpu time               (seconds, -t) unlimited
   max user processes              (-u) 14510
   virtual memory          (kbytes, -v) unlimited
   file locks                      (-x) unlimited
   ```
   
   ---
   
   ### 问题描述
   > 在使用 TCP 代理时,所有代理使用 local 模式
   
   在代理数据添加到大概  5000 个的时候,bootstrap 服务日志报错:
   ```log
   2025-05-07 11:07:41 [WebSocketConnectReadThread-8345] ERROR 
org.apache.shenyu.plugin.sync.data.websocket.client.ShenyuWebsocketClient - 
websocket server[ws://localhost:9095/websocket] is error.....
   java.lang.IllegalStateException: failed to create a child event loop
           at 
io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:88)
           at 
io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:60)
           at 
io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:49)
           at 
io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:59)
           at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:87)
           at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:82)
           at 
io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:69)
           at 
reactor.netty.resources.DefaultLoopResources.cacheNioServerLoops(DefaultLoopResources.java:213)
           at 
reactor.netty.resources.DefaultLoopResources.onServer(DefaultLoopResources.java:155)
           at 
reactor.netty.transport.ServerTransportConfig.childEventLoopGroup(ServerTransportConfig.java:205)
           at 
reactor.netty.transport.ServerTransport.lambda$bind$0(ServerTransport.java:113)
           at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:58)
           at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
           at reactor.core.publisher.Mono.block(Mono.java:1765)
           at 
reactor.netty.transport.ServerTransport.bindNow(ServerTransport.java:149)
           at 
reactor.netty.transport.ServerTransport.bindNow(ServerTransport.java:134)
           at 
org.apache.shenyu.protocol.tcp.TcpBootstrapServer.start(TcpBootstrapServer.java:79)
           at 
org.apache.shenyu.plugin.tcp.handler.TcpBootstrapFactory.createBootstrapServer(TcpBootstrapFactory.java:58)
           at 
org.apache.shenyu.plugin.tcp.handler.TcpProxySelectorDataHandler.handlerProxySelector(TcpProxySelectorDataHandler.java:45)
           at 
org.apache.shenyu.plugin.base.cache.CommonProxySelectorDataSubscriber.lambda$onSubscribe$1(CommonProxySelectorDataSubscriber.java:43)
           at java.base/java.util.Optional.ifPresent(Optional.java:178)
           at 
org.apache.shenyu.plugin.base.cache.CommonProxySelectorDataSubscriber.onSubscribe(CommonProxySelectorDataSubscriber.java:43)
           at 
org.apache.shenyu.plugin.sync.data.websocket.handler.ProxySelectorDataHandler.lambda$null$0(ProxySelectorDataHandler.java:53)
           at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
           at 
org.apache.shenyu.plugin.sync.data.websocket.handler.ProxySelectorDataHandler.lambda$doUpdate$1(ProxySelectorDataHandler.java:52)
           at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
           at 
org.apache.shenyu.plugin.sync.data.websocket.handler.ProxySelectorDataHandler.doUpdate(ProxySelectorDataHandler.java:51)
           at 
org.apache.shenyu.plugin.sync.data.websocket.handler.AbstractDataHandler.handle(AbstractDataHandler.java:77)
           at 
org.apache.shenyu.plugin.sync.data.websocket.handler.WebsocketDataHandler.executor(WebsocketDataHandler.java:65)
           at 
org.apache.shenyu.plugin.sync.data.websocket.client.ShenyuWebsocketClient.handleResult(ShenyuWebsocketClient.java:197)
           at 
org.apache.shenyu.plugin.sync.data.websocket.client.ShenyuWebsocketClient.onMessage(ShenyuWebsocketClient.java:143)
           at 
org.java_websocket.client.WebSocketClient.onWebsocketMessage(WebSocketClient.java:591)
           at 
org.java_websocket.drafts.Draft_6455.processFrameText(Draft_6455.java:885)
           at 
org.java_websocket.drafts.Draft_6455.processFrame(Draft_6455.java:819)
           at 
org.java_websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:379)
           at org.java_websocket.WebSocketImpl.decode(WebSocketImpl.java:216)
           at 
org.java_websocket.client.WebSocketClient.run(WebSocketClient.java:508)
           at java.base/java.lang.Thread.run(Thread.java:833)
           Suppressed: java.lang.Exception: #block terminated with an error
                   at 
reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:139)
                   at reactor.core.publisher.Mono.block(Mono.java:1766)
                   ... 24 common frames omitted
   Caused by: io.netty.channel.ChannelException: failed to open a new selector
           at 
io.netty.channel.nio.NioEventLoop.openSelector(NioEventLoop.java:179)
           at io.netty.channel.nio.NioEventLoop.<init>(NioEventLoop.java:146)
           at 
io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:183)
           at 
io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:38)
           at 
io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:84)
           ... 37 common frames omitted
   Caused by: java.io.IOException: 打开的文件过多
           at java.base/sun.nio.ch.EPoll.create(Native Method)
           at 
java.base/sun.nio.ch.EPollSelectorImpl.<init>(EPollSelectorImpl.java:78)
           at 
java.base/sun.nio.ch.EPollSelectorProvider.openSelector(EPollSelectorProvider.java:36)
           at 
io.netty.channel.nio.NioEventLoop.openSelector(NioEventLoop.java:177)
           ... 41 common frames omitted
   ```
   
   使用 `lsof -p $pid` 查看打开的文件时发现存在大量 `eventpool` 和 `eventfd`, 以下为截取信息
   ```text
   java    84752 devops *433u     IPv6            2107390       0t0       TCP 
*:24586 (LISTEN)
   java    84752 devops *434u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *435u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *436u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *437u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *438u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *439u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *440u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *441u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *442u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *443u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *444u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *445u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *446u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *447u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *448u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *449u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *450u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *451u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *452u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *453u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *454u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *455u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *456u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *457u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *458u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *459u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *460u     IPv6            2107391       0t0       TCP 
*:29500 (LISTEN)
   java    84752 devops *461u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *462u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *463u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *464u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *465u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *466u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *467u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *468u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *469u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *470u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *471u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *472u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *473u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *474u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *475u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *476u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *477u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *478u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *479u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *480u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *481u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *482u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *483u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *484u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *485u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *486u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *487u     IPv6            2107392       0t0       TCP 
*:19746 (LISTEN)
   java    84752 devops *488u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *489u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *490u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *491u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *492u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *493u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *494u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *495u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *496u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *497u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *498u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *499u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *500u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *501u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *502u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *503u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *504u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *505u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *506u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *507u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *508u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *509u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *510u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *511u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *512u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *513u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *514u     sock                0,9       0t0   2108417 
protocol: TCPv6
   java    84752 devops *515u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *516u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *517u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *518u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *519u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *520u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *521u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *522u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *523u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *524u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *525u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *526u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *527u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *528u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *529u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *530u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *531u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *532u  a_inode               0,14         0     10521 
[eventfd]
   java    84752 devops *533u  a_inode               0,14         0     10521 
[eventpoll]
   java    84752 devops *534u  a_inode               0,14         0     10521 
[eventfd]
   ```
   
   ### 问题发现过程
   使用 `lsof -p $pid | wc -l` 观察文件描述符变化
   
   每创建一个 tcp 代理,则文件描述符加 **28**
   删除单个tcp代理时,文件描述符减 **1**
   
   感觉像是删除对应的代理时,只释放了 `TcpBootstrapServer` 对应的连接,而未释放对应的 `fd` 
   
   有无解决办法?
   
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@shenyu.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to