亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Redis > 正文

Redis連接超時異常的處理方法

2020-10-28 21:27:41
字體:
來源:轉載
供稿:網友

0、問題描述

使用Jedis連接redis進行數據查詢操作,正常的代碼運行沒有問題,但是時不時會報出如下錯誤:

Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out
 at redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:202)
 at redis.clients.util.RedisInputStream.read(RedisInputStream.java:181)
 at redis.clients.jedis.Protocol.processBulkReply(Protocol.java:181)
 at redis.clients.jedis.Protocol.process(Protocol.java:155)
 at redis.clients.jedis.Protocol.processMultiBulkReply(Protocol.java:206)
 at redis.clients.jedis.Protocol.process(Protocol.java:157)
 at redis.clients.jedis.Protocol.processMultiBulkReply(Protocol.java:206)
 at redis.clients.jedis.Protocol.process(Protocol.java:157)
 at redis.clients.jedis.Protocol.read(Protocol.java:215)
 at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340)
 at redis.clients.jedis.Connection.getRawObjectMultiBulkReply(Connection.java:285)
 at redis.clients.jedis.Connection.getObjectMultiBulkReply(Connection.java:291)
 at redis.clients.jedis.BinaryJedis.hscan(BinaryJedis.java:3390)
 at com.ict.mcg.filter.DuplicateClueFilterV2.hscan(DuplicateClueFilterV2.java:867)
 at com.ict.mcg.filter.DuplicateClueFilterV2.collectRecentCluekeywords(DuplicateClueFilterV2.java:487)
 at com.ict.mcg.main.GetCluesMain.run_online(GetCluesMain.java:208)
 at com.ict.mcg.main.GetCluesMain.main(GetCluesMain.java:1685)
Caused by: java.net.SocketTimeoutException: Read timed out
 at java.net.SocketInputStream.socketRead0(Native Method)
 at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
 at java.net.SocketInputStream.read(SocketInputStream.java:171)
 at java.net.SocketInputStream.read(SocketInputStream.java:141)
 at java.net.SocketInputStream.read(SocketInputStream.java:127)
 at redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:196)
 ... 16 more

究其原因,可以定位為java.net.SocketTimeoutException: Read timed out,即網絡連接異常;

1、 可能的原因

1.1 服務器資源包括內存、磁盤、cpu等利用率高

經過查看redis部署機器的狀態信息,發現整體機器運行狀態良好

1.2 服務器設置防火墻,導致連接失敗

因為正常的代碼流程都可以跑通,所以防火墻設置沒有問題;

1.3 redis配置文件bind監聽host配置不當

redis的配置文件中bind對應host的配置如下:

# By default Redis listens for connections from all the network interfaces# available on the server. It is possible to listen to just one or multiple# interfaces using the "bind" configuration directive, followed by one or# more IP addresses.## Examples:## bind 192.168.1.100 10.0.0.1# bind 127.0.0.1

默認的bind綁定的host為0.0.0.0,即可以監聽每一個可用的網絡接口;相當于配置為:

bind 0.0.0.0

我們的配置文件也配置正常,而且正常的代碼流程運行正常,也可以佐證這一點;

1.4 Jedis使用配置問題

目前Jedis的連接池配置如下:

private static JedisPool getPool() {    if (pool == null) {      JedisPoolConfig config = new JedisPoolConfig();      //控制一個pool可分配多少個jedis實例,通過pool.getResource()來獲?。?     //如果賦值為-1,則表示不限制;如果pool已經分配了maxActive個jedis實例,則此時pool的狀態為exhausted(耗盡)。      config.setMaxActive(10);      //控制一個pool最多有多少個狀態為idle(空閑的)的jedis實例。      config.setMaxIdle(2);      //表示當borrow(引入)一個jedis實例時,最大的等待時間,如果超過等待時間,則直接拋出JedisConnectionException;      config.setMaxWait(1000 * 200000);      //在borrow一個jedis實例時,是否提前進行validate操作;如果為true,則得到的jedis實例均是可用的;      config.setTestOnBorrow(true);      config.setTestOnReturn(true);      //目前redis只有一個服務器      pool = new JedisPool(config, "localhost", 6379);    }    return pool;  }  private static Jedis getJedis() {    Jedis jedis = null;    int count = 0;    do {      try {        pool = getPool();        jedis = pool.getResource();      } catch(Exception e) {//    System.out.println(e.getMessage());        e.printStackTrace();        pool.returnBrokenResource(jedis);      }      count++;    } while (jedis==null && count < 3);    return jedis;  }

構建JedisPool的邏輯中,只是設置了config.setMaxWait(1000 * 200000);,這個是引入新的jedis實例的最大等待時間,并沒有進行其他相關的連接超時的配置;于是查看JedisPool的源代碼,發現如下:

public JedisPool(final Config poolConfig, final String host) {    this(poolConfig, host, Protocol.DEFAULT_PORT, Protocol.DEFAULT_TIMEOUT, null, Protocol.DEFAULT_DATABASE);  }  public JedisPool(String host, int port) {    this(new Config(), host, port, Protocol.DEFAULT_TIMEOUT, null, Protocol.DEFAULT_DATABASE);  }  public JedisPool(final String host) {    this(host, Protocol.DEFAULT_PORT);  }  public JedisPool(final Config poolConfig, final String host, int port,      int timeout, final String password) {    this(poolConfig, host, port, timeout, password, Protocol.DEFAULT_DATABASE);  }  public JedisPool(final Config poolConfig, final String host, final int port) {    this(poolConfig, host, port, Protocol.DEFAULT_TIMEOUT, null, Protocol.DEFAULT_DATABASE);  }  public JedisPool(final Config poolConfig, final String host, final int port, final int timeout) {    this(poolConfig, host, port, timeout, null, Protocol.DEFAULT_DATABASE);  }  public JedisPool(final Config poolConfig, final String host, int port, int timeout, final String password,          final int database) {    super(poolConfig, new JedisFactory(host, port, timeout, password, database));  }

由上述代碼可以看到,JedisPool有多個重載的構造函數,并且構造函數中需要傳入一個timeout參數作為連接的超時時間,如果沒有傳,則采用Protocol.DEFAULT_TIMEOUT作為默認的超時時間,繼續跟蹤源碼:

public final class Protocol {  public static final int DEFAULT_PORT = 6379;  public static final int DEFAULT_TIMEOUT = 2000;  public static final int DEFAULT_DATABASE = 0;  public static final String CHARSET = "UTF-8";  public static final byte DOLLAR_BYTE = '$';  public static final byte ASTERISK_BYTE = '*';  public static final byte PLUS_BYTE = '+';  public static final byte MINUS_BYTE = '-';  public static final byte COLON_BYTE = ':';  private Protocol() { // this prevent the class from instantiation  }

可以得出結論,默認JedisPool中連接的默認超時時間為2秒,而我們調用的JedisPool構造函數,恰恰采用的是這個配置,只要兩秒鐘沒有連接成功,redis的連接就斷開,從而報錯,這在數據庫請求并發量比較大的時候是有可能發生的,遂做如下更改,在創建JedisPool的時候,傳入一個較大的超時時間:

pool = new JedisPool(config, ParamUtil.REDIS_ADDRESS[0], ParamUtil.REDIS_PORT, 1000 * 10);

2、總結

遇到問題還是多查,多看源碼,多看源碼中的配置,仔細一項一項地排查問題!

到此這篇關于Redis連接超時異常處理的文章就介紹到這了,更多相關Redis連接超時異常內容請搜索武林網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕日韩精品在线| 亚洲美女av在线播放| 午夜精品一区二区三区在线视频| 久久亚洲春色中文字幕| 久久精品国产成人精品| 亚洲综合成人婷婷小说| 亚洲精品美女网站| 中文字幕精品视频| 91精品国产自产在线| 国产色综合天天综合网| 亚洲欧美国内爽妇网| 欧美亚洲国产精品| 国产精品久久一区主播| 欧美视频在线观看免费| 亚洲bt天天射| 国产精品入口夜色视频大尺度| 成人美女免费网站视频| 国产精品私拍pans大尺度在线| 日韩美女视频免费在线观看| 日韩视频中文字幕| 91视频九色网站| 8050国产精品久久久久久| 国产视频丨精品|在线观看| 欧美丰满少妇xxxxx| 精品视频9999| 在线a欧美视频| 欧美日韩亚洲视频一区| 欧美激情一区二区三区久久久| 亚洲tv在线观看| 国产午夜精品全部视频播放| 国产一区二区在线播放| 精品中文字幕视频| 欧美激情国产精品| 亚洲性无码av在线| 亚洲精品xxx| 国产精品中文字幕久久久| 亚洲天堂开心观看| 国产日韩换脸av一区在线观看| 欧美成人网在线| 日韩av网站大全| 亚洲欧美国产日韩天堂区| 欧美激情视频给我| 久久这里有精品视频| 欧美日韩国产精品一区二区不卡中文| 国产97在线|日韩| 精品久久久久久电影| 久久精品视频在线观看| 国内精品在线一区| 91精品中国老女人| 久久精品国产一区二区电影| 亚洲va欧美va国产综合剧情| 亚洲天堂久久av| 久久久免费高清电视剧观看| 久久理论片午夜琪琪电影网| 亚洲奶大毛多的老太婆| 亚洲欧洲在线播放| 国产日韩欧美夫妻视频在线观看| 中文字幕无线精品亚洲乱码一区| 日韩hd视频在线观看| 日韩电影中文 亚洲精品乱码| 亚洲欧美日韩中文视频| 欧美精品做受xxx性少妇| 成人啪啪免费看| 97av在线影院| 欧美国产视频日韩| 国产自摸综合网| 日韩成人av网址| 成人午夜黄色影院| 最近2019年日本中文免费字幕| 国产精品久久久一区| 日韩美女视频免费看| 中文字幕亚洲无线码在线一区| 最新69国产成人精品视频免费| 97香蕉超级碰碰久久免费的优势| 伊人久久久久久久久久| 欧美自拍视频在线观看| 国产精品一区二区久久国产| 色爱av美腿丝袜综合粉嫩av| 日日摸夜夜添一区| 久热国产精品视频| 久久在线免费观看视频| 欧美—级高清免费播放| 欧美老少做受xxxx高潮| 国产精品观看在线亚洲人成网| 日本精品在线视频| 欧美日韩午夜视频在线观看| 亚洲国模精品一区| 国产精品成人va在线观看| 国产69精品久久久久9999| 中文字幕亚洲欧美日韩在线不卡| 欧美最近摘花xxxx摘花| 国产精品成人av在线| 日韩精品免费一线在线观看| 欧美色图在线视频| 中文字幕日本欧美| 欧美裸体视频网站| 国产中文字幕亚洲| 亚州av一区二区| 亚洲精品第一国产综合精品| 日韩精品视频免费专区在线播放| 欧美激情区在线播放| 色偷偷偷综合中文字幕;dd| 国产精品直播网红| 日韩福利在线播放| 中文字幕精品久久久久| 欧美电影免费观看大全| 久久综合久久88| 亚洲性视频网址| 91九色视频在线| 久久亚洲私人国产精品va| 17婷婷久久www| 欧美精品在线视频观看| 色婷婷综合久久久久中文字幕1| 久久久成人精品| 国产亚洲综合久久| 精品国产一区二区三区久久久| 亚洲欧洲视频在线| 日韩国产一区三区| 欧美激情aaaa| 欧美日韩在线一区| 午夜欧美不卡精品aaaaa| 91国内免费在线视频| 久久久91精品国产| 亚洲人成绝费网站色www| 成人久久久久久久| 97在线免费观看| 亚洲人午夜精品免费| 久久精品青青大伊人av| 欧美成人在线影院| 日韩av中文字幕在线| 91亚洲精品一区二区| 亚洲欧美中文在线视频| 亚洲欧美中文另类| 欧美大片在线影院| 911国产网站尤物在线观看| 国产精品女视频| 色哟哟网站入口亚洲精品| 97视频在线观看免费| 成人有码视频在线播放| 亚洲国产成人精品久久| 国产97在线|亚洲| 中文字幕亚洲第一| 一本一本久久a久久精品综合小说| 久久亚洲一区二区三区四区五区高| 岛国精品视频在线播放| 国产一区二区三区18| 91av视频在线免费观看| 亚洲国产欧美精品| 亚洲国产精久久久久久| 98精品国产自产在线观看| 日韩最新中文字幕电影免费看| 超薄丝袜一区二区| 成人免费大片黄在线播放| 成人黄色片在线| 日韩av电影免费观看高清| 国产精品美女久久久久av超清| 亚洲成人激情小说| 亚洲自拍偷拍色图| 欧美黄色三级网站| 色婷婷av一区二区三区久久| 欧美三级xxx| 欧美成人三级视频网站| 久久伊人91精品综合网站| 日韩欧美综合在线视频|