早上发现一个问题,客户端接收不到数据库的数据了。。。
环境是这样的,在公网上租了一个服务器,装了mysql并运行了一个服务程序,然后客户端为手机APP。APP与服务程序通过socket通信,服务程序会解析相关报文然后读取数据库并发送到客户端(服务程序在后台长期运行,与数据库长期连接)
通过查日志发现,客户端与服务程序的连接还在,但收到的数据却只有报头和报尾,也就是说数据库中的数据并没有读出来
这时候就想到是服务程序和数据库的连接除了问题,导致数据读不出来
找资料发现一个比较切合当前情况的现象,sqlserver如果发现连接长时间(默认八小时)没有使用,那么就会主动断开,主动断!主动断!
基于这种状况我想到以下几种解决方案:
1、将mysql的配置文件my.cnf修改如下:
即将连接超时的时间改大
2、在服务程序中定时操作数据库,保证连接一直不断
3、服务程序每次读写数据库时,先检测连接是否存在
番外
Linux中程序后台运行
nohup ./可执行程序名 > myout.file 2>&1 &
使用上述命令即可将程序放到后台长期运行,并且日志信息会保存在myout.file中
参考:https://www.cnblogs.com/zzyoucan/p/7764590.html
欢迎大家指教,希望大家喜欢
路漫漫其修远兮,同志仍须努力