当前位置:   article > 正文

【日常Exception】第二十六回:RedisSystemException...RejectedExecutionException: event executor terminated_org.springframework.data.redis.redissystemexceptio

org.springframework.data.redis.redissystemexception: unknown redis exception

热门系列:


1、问题

        报错提示代码如下:

org.springframework.data.redis.RedisSystemException: Unknown redis exception; nested exception is java.util.concurrent.RejectedExecutionException: event executor terminated

  1. org.springframework.data.redis.RedisSystemException: Unknown redis exception; nested exception is java.util.concurrent.RejectedExecutionException: event executor terminated
  2. at org.springframework.data.redis.FallbackExceptionTranslationStrategy.getFallback(FallbackExceptionTranslationStrategy.java:53)
  3. at org.springframework.data.redis.FallbackExceptionTranslationStrategy.translate(FallbackExceptionTranslationStrategy.java:43)
  4. at org.springframework.data.redis.connection.lettuce.LettuceConnection.convertLettuceAccessException(LettuceConnection.java:270)
  5. at org.springframework.data.redis.connection.lettuce.LettuceStringCommands.convertLettuceAccessException(LettuceStringCommands.java:799)
  6. at org.springframework.data.redis.connection.lettuce.LettuceStringCommands.get(LettuceStringCommands.java:68)
  7. at org.springframework.data.redis.connection.DefaultedRedisConnection.get(DefaultedRedisConnection.java:260)
  8. at org.springframework.data.redis.core.DefaultValueOperations$1.inRedis(DefaultValueOperations.java:57)
  9. at org.springframework.data.redis.core.AbstractOperations$ValueDeserializingRedisCallback.doInRedis(AbstractOperations.java:60)
  10. at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:228)
  11. at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:188)
  12. at org.springframework.data.redis.core.AbstractOperations.execute(AbstractOperations.java:96)
  13. at org.springframework.data.redis.core.DefaultValueOperations.get(DefaultValueOperations.java:53)
  14. at hk.com.easyview.common.helper.RedisHelper.get(RedisHelper.java:109)
  15. at hk.com.easyview.common.helper.RedisHelper$$FastClassBySpringCGLIB$$d1b63cdd.invoke(<generated>)
  16. at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
  17. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769)
  18. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
  19. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
  20. at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88)
  21. at hk.com.easyview.common.aspect.RedisAspect.aroundRedis(RedisAspect.java:30)
  22. at sun.reflect.GeneratedMethodAccessor136.invoke(Unknown Source)
  23. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  24. at java.lang.reflect.Method.invoke(Method.java:498)
  25. at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644)
  26. at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633)
  27. at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
  28. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
  29. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
  30. at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95)
  31. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
  32. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
  33. at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
  34. at hk.com.easyview.common.helper.RedisHelper$$EnhancerBySpringCGLIB$$c9ceeb9b.get(<generated>)
  35. at hk.com.easyview.common.interceptor.DefaultSignVerifyInterceptor.checkRenewal(DefaultSignVerifyInterceptor.java:179)
  36. at hk.com.easyview.common.interceptor.DefaultSignVerifyInterceptor.check(DefaultSignVerifyInterceptor.java:149)
  37. at hk.com.easyview.common.interceptor.AbstractInterceptor.preHandle(AbstractInterceptor.java:90)
  38. at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:141)
  39. at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1035)
  40. at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
  41. at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
  42. at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
  43. at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
  44. at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
  45. at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
  46. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
  47. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  48. at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
  49. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  50. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  51. at hk.com.easyview.common.filter.ChannelFilter.doFilter(ChannelFilter.java:32)
  52. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  53. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  54. at hk.com.easyview.common.filter.AbstractCorsFilter.doFilter(AbstractCorsFilter.java:55)
  55. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  56. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  57. at hk.com.easyview.common.filter.GzipFilter.doFilter(GzipFilter.java:47)
  58. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  59. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  60. at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
  61. at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
  62. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  63. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  64. at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
  65. at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
  66. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  67. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  68. at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:109)
  69. at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
  70. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  71. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  72. at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
  73. at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
  74. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  75. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  76. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
  77. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
  78. at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
  79. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
  80. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
  81. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
  82. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
  83. at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)
  84. at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
  85. at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
  86. at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639)
  87. at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
  88. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  89. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  90. at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  91. at java.lang.Thread.run(Thread.java:748)
  92. Caused by: java.util.concurrent.RejectedExecutionException: event executor terminated
  93. Caused by: java.util.concurrent.RejectedExecutionException: event executor terminated
  94. at io.netty.util.concurrent.SingleThreadEventExecutor.reject(SingleThreadEventExecutor.java:926)
  95. at io.netty.util.concurrent.SingleThreadEventExecutor.offerTask(SingleThreadEventExecutor.java:353)
  96. at io.netty.util.concurrent.SingleThreadEventExecutor.addTask(SingleThreadEventExecutor.java:346)
  97. at io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:828)
  98. at io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:818)
  99. at io.netty.util.concurrent.AbstractScheduledEventExecutor.schedule(AbstractScheduledEventExecutor.java:261)
  100. at io.netty.util.concurrent.AbstractScheduledEventExecutor.schedule(AbstractScheduledEventExecutor.java:177)
  101. at io.netty.util.concurrent.AbstractEventExecutorGroup.schedule(AbstractEventExecutorGroup.java:50)
  102. at io.netty.util.concurrent.AbstractEventExecutorGroup.schedule(AbstractEventExecutorGroup.java:32)
  103. at io.lettuce.core.protocol.CommandExpiryWriter.potentiallyExpire(CommandExpiryWriter.java:164)
  104. at io.lettuce.core.protocol.CommandExpiryWriter.write(CommandExpiryWriter.java:111)
  105. at io.lettuce.core.RedisChannelHandler.dispatch(RedisChannelHandler.java:187)
  106. at io.lettuce.core.StatefulRedisConnectionImpl.dispatch(StatefulRedisConnectionImpl.java:171)
  107. at io.lettuce.core.AbstractRedisAsyncCommands.dispatch(AbstractRedisAsyncCommands.java:467)
  108. at io.lettuce.core.AbstractRedisAsyncCommands.get(AbstractRedisAsyncCommands.java:641)
  109. at sun.reflect.GeneratedMethodAccessor165.invoke(Unknown Source)
  110. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  111. at java.lang.reflect.Method.invoke(Method.java:498)
  112. at io.lettuce.core.FutureSyncInvocationHandler.handleInvocation(FutureSyncInvocationHandler.java:57)
  113. at io.lettuce.core.internal.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:80)
  114. at com.sun.proxy.$Proxy249.get(Unknown Source)
  115. at org.springframework.data.redis.connection.lettuce.LettuceStringCommands.get(LettuceStringCommands.java:66)
  116. ... 85 common frames omitted


2、问题分析

        这一块的主要原因是redis配置的连接池原因,我们目前配置的连接池如下:

  1. jedis:
  2. pool:
  3. max-active: 50
  4. max-wait: 50
  5. max-idle: 50
  6. min-idle: 0

后来通过翻阅资料,查看其底层配置发现,在 Spring Boot 1.x 版本默认使用的是 Jedis ,而在 Spring Boot 2.x 版本默认使用的就是Lettuce而我们的springboot版本已经使用到了 2.2.5.RELEASE 版本了,所以上述配置,其实是无效的!!!

        那么此时,通过查看源码发现:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZaE6Imv5Yuk5Yqz5YuH5pWi6ICM5Y-I6IGq5piO55qE6ICB5p2o,size_8,color_FFFFFF,t_70,g_se,x_16

         所以,因为配置的最大可用数量是不满足业务的,因此导致了上述的报错!!!


3、问题解决

        加上如下配置即可(具体配置可用数量,请根据业务具体情况使用):

  1. spring:
  2. redis:
  3. lettuce:
  4. pool:
  5. max-active: 50
  6. max-wait: 50
  7. max-idle: 50
  8. min-idle: 0
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号