报错信息可以看出:由于没有正常的关闭连接,导致连接异常

Caused by: redis.clients.jedis.exceptions.JedisConnectionException: Unexpected end of stream.
  at redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:198)
  at redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:40)
  at redis.clients.jedis.Protocol.process(Protocol.java:132)
  at redis.clients.jedis.Protocol.read(Protocol.java:196)
  at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:288)
  at redis.clients.jedis.Connection.getBinaryBulkReply(Connection.java:207)
  at redis.clients.jedis.Connection.getBulkReply(Connection.java:196)
  at redis.clients.jedis.Jedis.get(Jedis.java:98)
  at com.dinpay.bdp.rcp.streaming.WindowHzUtil.setData(WindowHzUtil.java:343)
  at com.dinpay.bdp.rcp.streaming.WindowHzUtil$12$1.call(WindowHzUtil.java:329)
  at com.dinpay.bdp.rcp.streaming.WindowHzUtil$12$1.call(WindowHzUtil.java:325)
  at org.apache.spark.api.java.JavaRDDLike$$anonfun$foreach$1.apply(JavaRDDLike.scala:332)
  at org.apache.spark.api.java.JavaRDDLike$$anonfun$foreach$1.apply(JavaRDDLike.scala:332)
  at scala.collection.Iterator$class.foreach(Iterator.scala:727)
  at org.apache.spark.InterruptibleIterator.foreach(InterruptibleIterator.scala:28)
  at org.apache.spark.rdd.RDD$$anonfun$foreach$1$$anonfun$apply$32.apply(RDD.scala:912)
  at org.apache.spark.rdd.RDD$$anonfun$foreach$1$$anonfun$apply$32.apply(RDD.scala:912)
  at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1858)
  at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1858)
  at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)
  at org.apache.spark.scheduler.Task.run(Task.scala:89)
  at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213)
  ... 3 more

解决方法:采用jedis连接池实现连接,并关闭连接

import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; private static JedisPool pool = null; public static JedisPool getJedisPool(){ JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(500);
config.setMaxIdle(5);
config.setMaxWaitMillis(1000 * 100);
config.setTestOnBorrow(true);
if(pool == null){
pool = new JedisPool(config, Constant.CODISPROXY, Constant.CODISPORT);
}
return pool;
} 调用方式:
private static Jedis jedis = null;
try {
jedis = CodisUtil.getJedisPool().getResource();
jedis.set()....jedis operations
logger.info(tp._1() + ">>>>>>>>>>>>>" + tp._2());
logger.info("保存到Codis完成!");
} finally {
//回收jedis连接
if(jedis !=null){
jedis.close();
}
}

更多codis的介绍:
https://github.com/xetorthio/jedis/wiki/Getting-started#using-jedis-in-a-multithreaded-environment

Codis连接异常问题处理的更多相关文章

  1. 【转】Android开发中adb启动失败adb连接异常的解决办法 offline

    原文网址:http://www.cnblogs.com/yejiurui/p/4173521.html 一.情况描述: 我们在使用eclipse开发有时候会出现adb连接异常中,有时候控制台会打印出来 ...

  2. JBoss配置解决高并发连接异常问题(转)

    这两天一个项目在做压力测试的时候,发现只要并发数超过250个,连续测试两轮就会有连接异常出现,测试轮数越多出现越频繁,异常日志如下: Caused by: com.caucho.hessian.cli ...

  3. spring+ibatis问题1—— 程序报错:java.sql.SQLException: Io 异常: Connection reset by peer, socket write error; ”或“java.sql.SQLException 关闭的连接”异常

    转自:http://blog.sina.com.cn/s/blog_1549fb0710102whz2.html spring+ibatis程序测试时报错:java.sql.SQLException: ...

  4. TCP连接异常:broken pipe 和EOF

    本文介绍3种TCP连接异常的情况. 1.server端没有启动,client尝试连接 ./client dial failed: dial tcp 127.0.0.1:8080: connect: c ...

  5. Android开发中adb启动失败adb连接异常的解决办法

      一.情况描述:   我们在使用eclipse开发有时候会出现adb连接异常中,有时候控制台会打印出来 adb connect异常 比如会出现下面这样 : [2014-12-18 16:18:26 ...

  6. TCP连接异常断开检测(转)

    TCP是一种面向连接的协议,连接的建立和断开需要通过收发相应的分节来实现.某些时候,由于网络的故障或是一方主机的突然崩溃而另一方无法检测到,以致始终保持着不存在的连接.下面介绍一种方法来检测这种异常断 ...

  7. (转)TCP连接异常断开检测

    TCP是一种面向连接的协议,连接的建立和断开需要通过收发相应的分节来实现.某些时候,由于网络的故障或是一方主机的突然崩溃而另一方无法检测到,以致始终保持着不存在的连接.下面介绍一种方法来检测这种异常断 ...

  8. Redis连接异常

    1. 以指定配置文件启动Redis,否则配置的东西不生效 redis-cli shutdown 关闭 $ redis-server ./redis.conf 2.连接异常 redis.conf 配置文 ...

  9. ADO访问Oracle数据库,连接异常(Unknown error 0x800a0e7a)

    ADO访问Oracle数据库,连接异常(Unknown error 0x800a0e7a) 代码如下:执行Open过程中出现异常,信息为Unknown error 0x800a0e7a  C++ Co ...

随机推荐

  1. js后台提交成功后 关闭当前页 并刷新父窗体(转)

    原文地址:http://www.cnblogs.com/chenghu/p/3696433.html 后台提交成功后 关闭当前页 并刷新父窗体 this.ClientScript.RegisterSt ...

  2. 在Myeclipse8.5中安装findbugs方法

    step 1:首先从官网下载findbugs插件:http://downloads.sourceforge.net/project/findbugs/findbugs%20eclipse%20plug ...

  3. linux系统带宽监测脚本

    服务器可能经常遇到服务器出带宽跑满,不知如何查询被哪个进程占用的情况,有一款开源的英文软件iftop功能比较强大可以查询相关信息,可能刚接触linux系统的朋友不太会使用,在此写了一个功能比较简单无需 ...

  4. Ansible实战之Nginx高可用代理LNMP-wordpress

    author:JevonWei 版权声明:原创作品 blog:http://119.23.52.191/ --- 实验环境:前端使用Nginx做代理服务器,静态资源经由缓存服务器,连接后端web集群, ...

  5. 【bzoj2096】[Poi2010]Pilots 双指针法+STL-set

    题目描述 Tz又耍畸形了!!他要当飞行员,他拿到了一个飞行员测试难度序列,他设定了一个难度差的最大值,在序列中他想找到一个最长的子串,任意两个难度差不会超过他设定的最大值.耍畸形一个人是不行的,于是他 ...

  6. [AHOI2017/HNOI2017][bzoj4827] 礼物 [FFT]

    题面 传送门 思路 首先,有一个结论:两个手环增加非负整数亮度,等于其中一个增加一个整数亮度(可以为负) 我们令增加量为$x$,旋转以后的原数列为${a}{b}$那么现在的费用就是: $\sum_{i ...

  7. xml的并发

    网站整站的缓存方式都是依靠的DataSet的ReadXml和WriteXml的方式实现的,这种方式在访问量不是很大的网站中是一点问题都没有的(最大可承受的日IP估计在8000-15000左右),但是当 ...

  8. http2新特性

    1.二进制分帧   http1.x是文本格式传输,http2二进制格式传输,并且被切分未过个帧发送,帧可以根据头部流标识重新组装.   2. 单一长连接   同一个域名使用一个TCP连接,(http1 ...

  9. cocoapods的安装使用

    本文非原创,只是看了别人的教程,自己做了下笔记 转载cocoapods其他详细教程 mac快速安装 由于天朝的那堵墙的阻挡,我们需要用taobao的镜像 以下操作在终端进行 gem sources - ...

  10. 学习 表单验证插件validate

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...