初涉spring boot/cloud,最近有个项目启动时报redis无法连接,但又不影响正常使用
检查日志发现有如下报错信息:
at org.springframework.boot.actuate.health.RedisHealthIndicator.doHealthCheck(RedisHealthIndicator.java:52)
at org.springframework.boot.actuate.health.AbstractHealthIndicator.health(AbstractHealthIndicator.java:43)
at org.springframework.boot.actuate.health.CompositeHealthIndicator.health(CompositeHealthIndicator.java:68)
at org.springframework.boot.actuate.endpoint.HealthEndpoint.invoke(HealthEndpoint.java:85)
项目中没有明确指定Actuator监控Redis,因此怀疑是Actuator发现项目有redis时,默认自动监控的。
有两个解决方案:
第一种:允许Actuator监控Redis连接
在application.yml中增加配置:
spring:
redis:
database: 0
host: 127.0.0.1
port: 6379
password:
timeout: 0
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0
第二种:禁止Actuator监控Redis连接
在application.yml中增加配置:
management:
health:
redis:
enabled: false
完整的报错信息如下:
org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.fetchJedisConnector(JedisConnectionFactory.java:204)
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.getConnection(JedisConnectionFactory.java:348)
at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:129)
at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:92)
at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:79)
at org.springframework.boot.actuate.health.RedisHealthIndicator.doHealthCheck(RedisHealthIndicator.java:52)
at org.springframework.boot.actuate.health.AbstractHealthIndicator.health(AbstractHealthIndicator.java:43)
at org.springframework.boot.actuate.health.CompositeHealthIndicator.health(CompositeHealthIndicator.java:68)
at org.springframework.boot.actuate.endpoint.HealthEndpoint.invoke(HealthEndpoint.java:85)
at org.springframework.boot.actuate.endpoint.HealthEndpoint.invoke(HealthEndpoint.java:35)
at org.springframework.boot.actuate.endpoint.jmx.DataEndpointMBean.getData(DataEndpointMBean.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
at sun.reflect.GeneratedMethodAccessor186.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
at javax.management.modelmbean.RequiredModelMBean$4.run(RequiredModelMBean.java:1252)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1246)
at javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:1085)
at org.springframework.jmx.export.SpringModelMBean.invoke(SpringModelMBean.java:90)
at javax.management.modelmbean.RequiredModelMBean.getAttribute(RequiredModelMBean.java:1562)
at org.springframework.jmx.export.SpringModelMBean.getAttribute(SpringModelMBean.java:109)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:647)
at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:678)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1445)
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
at javax.management.remote.rmi.RMIConnectionImpl.getAttribute(RMIConnectionImpl.java:639)
at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
at sun.rmi.transport.Transport$1.run(Transport.java:200)
at sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
at redis.clients.util.Pool.getResource(Pool.java:53)
at redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)
at redis.clients.jedis.JedisPool.getResource(JedisPool.java:16)
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.fetchJedisConnector(JedisConnectionFactory.java:194)
... 50 common frames omitted
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect
at redis.clients.jedis.Connection.connect(Connection.java:207)
at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:93)
at redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1767)
at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:106)
at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:888)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:432)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:361)
at redis.clients.util.Pool.getResource(Pool.java:49)
... 53 common frames omitted
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at redis.clients.jedis.Connection.connect(Connection.java:184)
... 60 common frames omitted
分享到:
相关推荐
Spring Boot提供了一些工具和指标,可以通过Actuator端点查看Redis的相关信息。同时,Redis自身也提供了如INFO命令,用于获取服务器状态和统计信息。 总结来说,这个压缩包文件的内容将涵盖Spring Boot项目中集成...
Spring Boot的核心特性包括自动配置、内嵌Web服务器(如Tomcat)、健康检查和Actuator监控。通过 Starter POMs,开发者可以快速地创建一个独立运行的、生产级别的Java应用。 接下来,我们关注Redis。Redis是一个高...
本课程内容包括Spring简介、Spring Boot简介、安装JDK、安装Maven、第...Redis消息、测试Spring Boot应用程序(Demo应用测试、城市模块测试)、Spring Boot Actuator(启用生产功能、终点)、阿里云服务器、Xshell、...
《Spring Boot实战派》源码提供了丰富的学习材料,旨在帮助开发者深入理解并熟练掌握Spring Boot这一流行的Java后端开发框架。Spring Boot简化了Spring应用程序的初始设置和配置,使得开发人员能够快速构建可运行的...
综上所述,这份《Spring Boot企业级开发教程》配套资料为学习者提供了一个全方位、深度学习Spring Boot的平台,从理论到实践,从基础知识到复杂应用,帮助他们成长为能够应对企业级开发挑战的Spring Boot开发者。
Spring Boot、Spring Cloud、MySQL、Redis以及Elasticsearch是现代Web开发中不可或缺的技术栈,它们在构建高效、可扩展的应用程序方面发挥着重要作用。这个压缩包文件“教程合集:Spring Boot、Spring Cloud、MySQL...
5. **Spring Boot Actuator**:介绍监控和度量工具,如健康检查、指标收集、审计等,用于生产环境中的应用管理。 6. **Spring Boot CLI**:讨论命令行界面工具的使用,以及如何快速运行和测试 Spring Boot 应用。 ...
- 数据库操作:Spring Boot提供了多种数据库操作方式,如使用JPA连接数据库,配置JPA,整合JPA保存数据,使用JdbcTemplate保存数据等。 - 配置应用:Spring Boot允许用户进行静态资源处理、任务调度、自定义配置文件...
Spring Boot 是一个由 Pivotal 团队开发的框架,旨在简化 Spring 应用程序的初始搭建以及开发过程。它集成了大量常用的第三方库配置,如 JDBC、MongoDB、RabbitMQ、Quartz 等,使得开发者可以“零配置”地启动项目,...
例如,通过使用Netty的NIO模型减少线程开销,利用Spring Boot的Actuator监控应用性能,以及引入Redis或Memcached进行缓存加速。 6. 安全性: 在仿微信的开发中,安全性尤为重要,包括数据传输的安全(HTTPS、JWT等...
Spring Boot 基于 Spring 4.x 开发,通过提供开箱即用的设置,让你可以快速地创建出可运行的应用程序。 分布式系统是现代软件架构中的重要组成部分,它涉及到多个节点之间的通信和协作,以实现高可用性和伸缩性。...
标题中的“管理系统系列--基于 Spring Boot2、Jpa、Spring Security、JWT、redis、Vu”表明这是一个关于构建管理系统的教程或项目,它涵盖了多种技术栈。让我们深入了解一下这些技术及其在系统开发中的作用: 1. **...
data-redis|[lettuce,redis,session redis,YAML配置,连接池,对象存储](https://github.com/smltq/spring-boot-demo/blob/master/data-redis/HELP.md) quartz|[Spring Scheduler,Quartz,分布式调度,集群,mysql持久化...
8. **Spring Boot Actuator与Redis监控**:Actuator提供了健康检查和监控功能,可以通过配置监控Redis的状态。 在提供的压缩包中,"测试项目"可能包含了一个完整的Spring Boot应用,包含了Redis的整合和测试用例。...
6. **监控和健康检查**:Spring Boot Actuator 提供了健康检查接口,可以通过 `/actuator/health` 来查看 Redis 的连接状态。此外,可以使用 Redisson 的监控功能来获取 Redis 服务器的统计信息。 通过以上步骤,你...
此外,源码中还可能涵盖日志管理、安全控制(Spring Security)、缓存支持(如Redis)以及其他Spring Boot集成的第三方服务,如邮件服务、任务调度(Quartz)等。通过实际操作和代码解读,可以提升开发者对Spring ...
4. **Actuator**:Spring Boot Actuator 提供了一组端点,用于监控和管理应用,包括健康检查、指标收集、审计、应用信息等,有助于微服务治理。 5. **Web 开发**:通过 `spring-boot-starter-web`,Spring Boot ...
《Spring Boot实战》是针对JavaEE开发领域的一本权威指南,Spring Boot作为JavaEE开发的颠覆者,极大地简化了传统JavaEE应用的复杂性,提高了开发效率。这本书全面覆盖了Spring Boot的核心概念、配置以及实战应用,...
在"springboot-webflux-redis"中,我们首先会设置Redis连接配置,使用Spring Data Redis库来管理Redis客户端。通过RedisTemplate或ReactiveRedisTemplate,我们可以方便地进行数据的增删改查操作。为了优化查询效率...