java连接redis超时问题怎么解决

java连接redis超时问题怎么解决,第1张

应该是redis本身的服务有问题

本文所针对的连接超时问题所涉及的相关元素如下:

Redis客户端: Jedis (java)

Redis版本 :2812

Redis部署操作系统类型:Linux

正文开始:

No 1Redis执行大命令(时间复杂度为O(N)的命令)

问题剖析:

aRedis服务器端通过单线程处理命令,一旦有大命令被执行,Redis将无法及时响应来自客户端的任何命令

关于Redis大命令的监控,可以查看slowlog来观察

b在使用jedis作为redis客户端时,当redis连接池的配置参数testOnBorrow=true时,默认会在获取redis连接

时,先执行redis的ping方法,而基于原因a,此时redis将无法及时响应,自然会报出time out异常

如何解决:

a尽量避免使用时间复杂度为O(N)的命令

b如果无法避免使用时间复杂度为O(N)的命令,则应降低其使用频率,避免在业务高峰期时使用

No 2Redis单次操作数据包过大

问题分析

a单次操作数据包过大,且操作频繁,极有可能会导致网络拥堵

b在使用jedis作为redis客户端时,当redis连接池的配置参数testOnBorrow=true时,默认会在获取redis连接

时,先执行redis的ping方法,而基于原因a,此时redis将无法及时响应,自然会报出time out异常

如何解决:

a排查代码,确定是否存在大数据(数据条目过多/单条数据过大)操作,将其进行改造,改造方案有两个:

a1数据拆分,变更数据类型(常见的情况是将java中的collection类型序列化后存入redis的String数据

类型中),如将String数据类型调整为hash/list/set等,这常用于解决单条数据量过大的情况

a2调整业务逻辑,减少单次数据查询范围(常见的情况如将redis中的整个hash数据取回,在应用程序内存中获取需要的entry),如使用hget等单条查询命令替换hgetall命令

我感觉有俩问题,1、连接地址和帐号不是一回事,你最好不要用域名做连接地址,可以用IP地址;2、你是在不行通过空间服务商进入线上后台,如果还不行就联系空间商,可能是他们的问题果是VPS的话好像要开通ftp某些权限才可以,你只是开通了帐号,能连接,并没有给ftp上传下载的权限,这个我在空间商里面看过教程的,在这没百度不让发连接,你可以在百度搜一下试试,希望能帮助你。

Connection timed out:no further information

连接超时,是连接服务器的问题 看你配置的服务器信息有没有问题 或者看服务器是否处于开启状态

其实不是很理解你的意思。mysql本身就是一个数据库。如果你是指程序连接到mysql数据库,则java里面好像要设计到一个jdbc的一个驱动,而php的话就不用,直接配置连接数据库,php是目前比较流行的一种存在于服务器端的脚本解释性编程语言。至于其它的,可以借鉴它的相关数据库文档。

以下均针对redhat65系统进行说明。

一、设置ssh超时断连

使用root用户,编辑/etc/profile文件,在

HOSTNAME='/bin/hostname'

HISTIZE=30

后增加一行

TMOUT=300

其中,300表示超过300秒无操作即断开连接。

设置好之后,所有新建的连接超过5分钟没有操作即断开(当前连接需要断开重连才会生效)。

二、如果已设置了超时断连,如何配置以尽量保持连接:

修改server端的/etc/ssh/sshd_config文件:

ClientAliveInterval 60 #server每隔60秒发送一次请求给client,然后client响应,从而保持连接

ClientAliveCountMax 3 #server发出请求后,客户端没有响应得次数达到3,就自动断开连接,正常情况下,client不会不响应。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » java连接redis超时问题怎么解决

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情