使用官方的mysql类,在onWorkStart时初始化连接,在onMessage时使用。workman刚启动时,执行sql语句很正常,静置几分钟后,再次使用,则出现阻塞,执行一条sql要阻塞几十分钟才有结果返回。(阻塞在数据库是通过打印lsof后得出的结果)
数据库为阿里云数据库,数据库的断开连接时间长为8小时
同一个服务器中,还有thinkphp非常驻内存的项目,操作同一个数据库的同一个表就不会出现这个现象。
请教各位大神,有没有好的调试方法去定位原因,或者有没有大神遇到过这个问题,感激不尽,解决了两天了,真是寝食难安呀,快要疯掉了。同样的代码,在开发环境没有任何问题。
在onWorkerStart里设置个定时器,每隔50秒 执行
select 1
, 防止云数据库因为连接长时间不通讯被清理。初步试了一下可以啦,感谢大佬!!!赶紧不紧,感激涕零!!!
这个方法好用,感谢walkor的帮助!