此次应用程序中Jedis连接池不能获取redis连接的问题,原因是redis服务器磁盘空间满,导致不能保存快照(rdb snapshot)。应用程序中在testOnBorrow为true的情况下,使用redisPING PONG命令测试redis连接是否有效时,收到了MISCONF Redis is configured to save RDB snapshots的响应,而非正常的PONG。这就导致jedis判断连接无效,强制断开了连接。
之后对TCP中RST flag做了浅尝辄止的分析。当设置了socket.setSoLinger(true, 0)后,关闭此socket将清空数据并向对方发送RST消息。
可以深入的地方还有不少,自己关于网络编程的知识也有待加强。准备补充下相关知识,再结合一些优秀的开源项目如redis、nginx深入了解下。