Redis和服务器问题:JedisConnectionException: Could not get a resource from the pool

宇宙第一编程菜鸡 2020-07-29 11:42:27
我服务器本来安装了一个redis服务(是通过下载压缩包,解压然后make的),并且代码是能够连接到服务器的redis,并正常获取数据的。今天上午给服务器安装了一个宝塔面板,因为在服务器这方面完全小白,就又通过宝塔安装了一个redis。后面把宝塔的所有安装软件全都卸载,并卸载了宝塔。之后我的程序就出问题了。现在我就又赶紧安装回了宝塔,但是依然还是报一样的错。报错如下:
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
at redis.clients.jedis.util.Pool.getResource(Pool.java:59)
at redis.clients.jedis.JedisPool.getResource(JedisPool.java:288)
at com.imooc.miaosha.redis.RedisService.set(RedisService.java:47)
at com.imooc.miaosha.service.MiaoShaUserService.addCookie(MiaoShaUserService.java:70)
at com.imooc.miaosha.service.MiaoShaUserService.login(MiaoShaUserService.java:53)
at com.imooc.miaosha.controller.LoginController.doLogin(LoginController.java:50)
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:483)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to 112.126.58.1:6379
at redis.clients.jedis.Connection.connect(Connection.java:165)
at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:109)
at redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1904)
at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:130)
at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:899)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:429)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:354)
at redis.clients.jedis.util.Pool.getResource(Pool.java:50)
... 55 more
Caused by: java.net.SocketTimeoutException: connect timed out
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
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.DefaultJedisSocketFactory.createSocket(DefaultJedisSocketFactory.java:53)
at redis.clients.jedis.Connection.connect(Connection.java:158)
... 62 more

其中涉及到的代码如下:
package com.imooc.miaosha.redis;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

@Service
public class RedisPoolFactory {

@Autowired
RedisConfig redisConfig;

@Bean
public JedisPool RedisPoolFactory(){
JedisPoolConfig jpc = new JedisPoolConfig();
jpc.setMaxTotal(redisConfig.getPoolMaxTotal());
jpc.setMaxIdle(redisConfig.getPoolMaxIdle());
jpc.setMaxWaitMillis(redisConfig.getPoolMaxWait() * 1000);
JedisPool jp = new JedisPool(jpc, redisConfig.getHost(), redisConfig.getPort(),
redisConfig.getTimeout()*1000, redisConfig.getPassword(), 0);
return jp;
}
}


package com.imooc.miaosha.redis;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "redis")
public class RedisConfig {
private String host;
private int port;
private int timeout;//秒
private String password;
private int poolMaxTotal;
private int poolMaxIdle;
private int poolMaxWait;//秒
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public int getTimeout() {
return timeout;
}
public void setTimeout(int timeout) {
this.timeout = timeout;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getPoolMaxTotal() {
return poolMaxTotal;
}
public void setPoolMaxTotal(int poolMaxTotal) {
this.poolMaxTotal = poolMaxTotal;
}
public int getPoolMaxIdle() {
return poolMaxIdle;
}
public void setPoolMaxIdle(int poolMaxIdle) {
this.poolMaxIdle = poolMaxIdle;
}
public int getPoolMaxWait() {
return poolMaxWait;
}
public void setPoolMaxWait(int poolMaxWait) {
this.poolMaxWait = poolMaxWait;
}
}


redis的配置如下:
redis.host=112.126.58.1
redis.port=6379
redis.timeout=3
redis.password=123456
redis.poolMaxTotal=10
redis.poolMaxIdle=10
redis.poolMaxWait=3


我的代码是在本地跑的,所以没有并发量的问题。而且服务器的安全组也开了6379端口。从服务器上运行redis-cli能够对redis里的数据正常存取,但是就是代码连接远程服务器的redis一直失败。这是为什么啊?我都搞了六七个小时也没懂,希望大佬指导
...全文
2079 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
LJCLJCLJC12 2021-07-15
  • 打赏
  • 举报
回复

img
请问下这个如何解决呢,找了半天不会弄

TZGod 2020-07-30
  • 打赏
  • 举报
回复
引用 7 楼 宇宙第一编程菜鸡 的回复:
[quote=引用 6 楼 TZGod 的回复:][quote=引用 5 楼 宇宙第一编程菜鸡 的回复:][quote=引用 2 楼 TZGod 的回复:]redis.conf文件内配置设置redis允许远程访问 把protected-mode no然后注释掉# bind 127.0.0.1 启动时候要带配置文件地址,因为redis.conf文件是redis的复制本 redis有个内置的默认配置文件 ./redis-server redis.conf文件地址 然后必须开启服务器防火墙,但你打开后redis很容易被攻击 建议redis加上密码
我的protected-mode设置成了no,bind的是0.0.0.0。我没有自己启动redis服务,而是通过宝塔控制面板来修改的redis.conf然后点击重载配置,然后再重启的redis,这样可以吗?但是我现在还是失败的。 [/quote] 查看防火墙状态 systemctl status firewalld 如果防火墙开启就关闭 关闭防火墙 systemctl stop firewalld 启动防火墙 systemctl start firewalld[/quote]!!!谢谢大佬!!关闭防火墙就好了,整了好长时间,太谢谢你了![/quote] 里面有个requirepass 属性加密码的防止恶意攻击 requirepass 密码
  • 打赏
  • 举报
回复
引用 6 楼 TZGod 的回复:
[quote=引用 5 楼 宇宙第一编程菜鸡 的回复:][quote=引用 2 楼 TZGod 的回复:]redis.conf文件内配置设置redis允许远程访问 把protected-mode no然后注释掉# bind 127.0.0.1 启动时候要带配置文件地址,因为redis.conf文件是redis的复制本 redis有个内置的默认配置文件 ./redis-server redis.conf文件地址 然后必须开启服务器防火墙,但你打开后redis很容易被攻击 建议redis加上密码
我的protected-mode设置成了no,bind的是0.0.0.0。我没有自己启动redis服务,而是通过宝塔控制面板来修改的redis.conf然后点击重载配置,然后再重启的redis,这样可以吗?但是我现在还是失败的。 [/quote] 查看防火墙状态 systemctl status firewalld 如果防火墙开启就关闭 关闭防火墙 systemctl stop firewalld 启动防火墙 systemctl start firewalld[/quote]!!!谢谢大佬!!关闭防火墙就好了,整了好长时间,太谢谢你了!
TZGod 2020-07-30
  • 打赏
  • 举报
回复
引用 5 楼 宇宙第一编程菜鸡 的回复:
[quote=引用 2 楼 TZGod 的回复:]redis.conf文件内配置设置redis允许远程访问 把protected-mode no然后注释掉# bind 127.0.0.1 启动时候要带配置文件地址,因为redis.conf文件是redis的复制本 redis有个内置的默认配置文件 ./redis-server redis.conf文件地址 然后必须开启服务器防火墙,但你打开后redis很容易被攻击 建议redis加上密码
我的protected-mode设置成了no,bind的是0.0.0.0。我没有自己启动redis服务,而是通过宝塔控制面板来修改的redis.conf然后点击重载配置,然后再重启的redis,这样可以吗?但是我现在还是失败的。 [/quote] 查看防火墙状态 systemctl status firewalld 如果防火墙开启就关闭 关闭防火墙 systemctl stop firewalld 启动防火墙 systemctl start firewalld
  • 打赏
  • 举报
回复
引用 2 楼 TZGod 的回复:
redis.conf文件内配置设置redis允许远程访问 把protected-mode no然后注释掉# bind 127.0.0.1 启动时候要带配置文件地址,因为redis.conf文件是redis的复制本 redis有个内置的默认配置文件 ./redis-server redis.conf文件地址 然后必须开启服务器防火墙,但你打开后redis很容易被攻击 建议redis加上密码
我的protected-mode设置成了no,bind的是0.0.0.0。我没有自己启动redis服务,而是通过宝塔控制面板来修改的redis.conf然后点击重载配置,然后再重启的redis,这样可以吗?但是我现在还是失败的。
TZGod 2020-07-30
  • 打赏
  • 举报
回复
引用 3 楼 宇宙第一编程菜鸡 的回复:
[quote=引用 1 楼 ITjavaman 的回复:]你本地的客户端应该也连接不了吧,先看看防火墙,另外配置bind的网卡IP是对的么
服务器的防火墙是不是就是安全组啊?我阿里云服务器的6379端口已经打开了,bind的就是0.0.0.0。但是还是报错[/quote] 防火墙是linux自带的防火墙不是安全组
  • 打赏
  • 举报
回复
引用 1 楼 ITjavaman 的回复:
你本地的客户端应该也连接不了吧,先看看防火墙,另外配置bind的网卡IP是对的么
服务器的防火墙是不是就是安全组啊?我阿里云服务器的6379端口已经打开了,bind的就是0.0.0.0。但是还是报错
TZGod 2020-07-30
  • 打赏
  • 举报
回复
redis.conf文件内配置设置redis允许远程访问 把protected-mode no然后注释掉# bind 127.0.0.1 启动时候要带配置文件地址,因为redis.conf文件是redis的复制本 redis有个内置的默认配置文件 ./redis-server redis.conf文件地址 然后必须开启服务器防火墙,但你打开后redis很容易被攻击 建议redis加上密码
ITjavaman 2020-07-30
  • 打赏
  • 举报
回复
你本地的客户端应该也连接不了吧,先看看防火墙,另外配置bind的网卡IP是对的么
彩虹向日葵 2020-07-30
  • 打赏
  • 举报
回复
你好啊:很荣幸看到你的帖子! 我专门为csdn有缘的女性职业程序员或工作方向为职业程序员的朋友建立了qq群,qq群号:124464628 目前,平台女性职业程序员占比59%,男性职业程序员占比41% 此平台面向编程初学者、专家、大学生及爱好者,还有在职程序员、设计师和架构师。 平台目标:成为完全独立的女性职业程序员或男性程序员高手的技术学习工作超级大群! 过往不恋,当下不乱,未来不迎,择一群,务一技,尽一生,山高任鸟飞,海阔任鱼跃! 非常欢迎你的加入,也欢迎大家踊跃加入!

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧