#7155·redisson

Why i use virtual Thread, redission error: Command still hasn't been written into connection!

Author: 953972527Created May 21, 2026Updated Jul 26, 2026
Labelsquestion

Under high concurrency scenarios using Java virtual threads, Redisson encounters an error after running for a period:

org.redisson.client.RedisTimeoutException: Command still hasn't been written into connection! Check CPU usage of the JVM. Check that there are no blocking invocations in async/reactive/rx listeners or subscribeOnElements method. Check connection with Redis node: ip/[ip]:6379 for TCP packet drops. Try to increase nettyThreads setting. Netty pending tasks: 1704, Node source: NodeSource [slot=0, addr=null, redisClient=null, redirect=null, entry=null], connection: RedisConnection@-543958019 [redisClient=[addr=redis://ip:6379,ip/[ip]:6379], channel=[id: 0x2641da26, L:/[ip]:44596 - R:ip/[ip]:6379], currentCommand=null, usage=1], command: (GET), params: [tenant_xxxx:system:config:58] after 3 retry attempts

but when i use thread pool, the issue nerver happen

Redisson config:

      poolSize: 50    
      poolMinIdleSize: 10    
      slavePoolSize: 2      
      slavePoolMinIdleSize: 1     
      dnsMonitoringInterval: 5000    
      readMode: MASTER     
      scanInterval: 30000     
      timeout: 5000        
      connectTimeout: 10000   
      idleConnectionTimeout: 300000   
      retryAttempts: 1       
      retryInterval: 1500  
      pingConnectionInterval: 60000 

virtural thread:

    SimpleAsyncTaskExecutor executor = new SimpleAsyncTaskExecutor();
    executor.setThreadFactory(virtualThreadFactory);
    executor.setConcurrencyLimit(500);
    executor.setDaemon(true);
    return executor;