今天跟人一起排查一个问题:
同一套worker代码,在旧服务器上执行正常,但是到了新的服务器上:worker起动后,运行正常,没有返回错误,但是server看不到注册的函数
最开始以为是网络不通或网络什么问题,但查了一圈,最后在gearmand的log中,发现了下面的错误:
FATAL [ 0] gearman_packet_unpack_header:invalid command value
结果是:
新服务器上的php gearman扩展是1.0.2版本,而gearmand server的版本是0.28,所以导致server无处理客户端的协议
php的gearman扩展是1.0.2,至少也要gearmand 0.33版本才能兼容
很低级的坑人错误,一开始也没怀疑两个worker服务器上的php扩展版本不同
本文记录了一次因Gearman客户端与服务器版本不兼容导致的问题排查经历。在新服务器上部署时,由于phpgearman扩展版本高于gearmand服务器版本,导致无法正常识别客户端协议。
143

被折叠的 条评论
为什么被折叠?



