现象
做期权夜盘时,对cpp_redis管理类做了修改,程序运行不到1小时就出现断连崩溃,报错如下:
过程
-
各种修改尝试,始终找不到原因,没有找到问题关键
开始以为是将redis管理类改为了单例导致的问题,修改之后仍然没有效果
百度相关问题,发现用cpp_redis的人实在太少,没有可以参考的用例
查看redis的日志,都是正常的刷新数据的日志,没有和连接相关的内容
去看cpp_redis源码中example的实例,发现都是非常简单的用法,和自己的使用相差不大
这个问题从库这方面找问题真的无从插手。于是转换角度,从tcp连接上找问题 -
既然报了tcp_client is disconnected错误,说明和redis的连接出现了某些问题。程序运行时,执行如下命令 netstat -anp | grep 6379 如下图所示。这个命令的几列数据意义如下 :
-
- proto:网络传输协议
- Recv-Q :数据已经在本地接收缓冲区,但是还没有recv()
The count of bytes not copied by the user program