第一次接触workman-json-rpc,调用服务的时候有时候会返回recvData empty,时好时坏。超时时间我设置的15秒,但是每次都很快返回recvData empty,跟踪代码,发现是RpcClient.php文件里的recvData方法,fgets返回false(connection是正确的),请问可能是什么导致的。
应该是连接断开了,一般是业务代码发致命错误,或者业务代码调用了exit、die导致。 如果发生致命错误会在workerman.log里可以看到错误日志。 发生问题的时候php start.php status 能看到一些信息进程退出码信息
感恩解答,我看只要出错,日志里抛出的就是pid:25765 worker[JsonRpc:25871] exit with status 11,翻看到了类似的帖子,这个原因是用了不稳定php扩展导致的吗(装的扩展没变,以前一直用的hprose-rpc直接调用的没有问题),还有可能是其他原因吗
你这个问题我也遇到过,还有一种可能就是: Services里的业务运行超时了【即超过了 RpcClient::TIME_OUT】,对于RpcClient来说, RpcClient::TIME_OUT意味着服务端的业务必须在 RpcClient::TIME_OUT 内将数据给我扔回来,否则客户端会关闭连接。
感恩解答,我看错误日志里显示的pid:25765 worker[JsonRpc:25871] exit with status 11,请问这个错误码是因为不稳定的php扩展导致的吗,感谢
@5200: exit with status 11 表明进程收到了 SIGSEGV 信号,SIGSEGV代表在POSIX兼容的平台上,SIGSEGV是当一个进程执行了一个无效的内存引用,或发生段错误时发送给它的信号。 据此推测最大可能的原因是: 1、使用了不稳定的PHP扩展导致内存泄漏; 2、程序本身可能导致的内存泄漏,比如使用了类的静态数组;
感谢指导,起先还以为以为是zookeeper扩展的问题,删掉了RpcClient里改造的代码,后来发现是因为项目里还继承了hprose-rpc的service,去掉就好了,感谢感谢
状态图如下
php 发生了coredump,可能是用了不稳定的php版本,也可能是用了不稳定的php扩展
@1:感谢指导,找到了问题,因为项目里还继承了别的rpc服务端导致的,去掉就好了,还有一个问题。 我提供的服务不用static也可以正常跑,看文档上说服务方法也要定义成static,请问如果方法不换成static的会有别的影响吗
没什么影响。可能会有一些提示类的php日志
@1:感谢
应该是连接断开了,一般是业务代码发致命错误,或者业务代码调用了exit、die导致。
如果发生致命错误会在workerman.log里可以看到错误日志。
发生问题的时候php start.php status 能看到一些信息进程退出码信息
感恩解答,我看只要出错,日志里抛出的就是pid:25765 worker[JsonRpc:25871] exit with status 11,翻看到了类似的帖子,这个原因是用了不稳定php扩展导致的吗(装的扩展没变,以前一直用的hprose-rpc直接调用的没有问题),还有可能是其他原因吗
你这个问题我也遇到过,还有一种可能就是:
Services里的业务运行超时了【即超过了 RpcClient::TIME_OUT】,对于RpcClient来说, RpcClient::TIME_OUT意味着服务端的业务必须在 RpcClient::TIME_OUT 内将数据给我扔回来,否则客户端会关闭连接。
感恩解答,我看错误日志里显示的pid:25765 worker[JsonRpc:25871] exit with status 11,请问这个错误码是因为不稳定的php扩展导致的吗,感谢
@5200: exit with status 11 表明进程收到了 SIGSEGV 信号,SIGSEGV代表在POSIX兼容的平台上,SIGSEGV是当一个进程执行了一个无效的内存引用,或发生段错误时发送给它的信号。
据此推测最大可能的原因是:
1、使用了不稳定的PHP扩展导致内存泄漏;
2、程序本身可能导致的内存泄漏,比如使用了类的静态数组;
感谢指导,起先还以为以为是zookeeper扩展的问题,删掉了RpcClient里改造的代码,后来发现是因为项目里还继承了hprose-rpc的service,去掉就好了,感谢感谢
状态图如下
php 发生了coredump,可能是用了不稳定的php版本,也可能是用了不稳定的php扩展
@1:感谢指导,找到了问题,因为项目里还继承了别的rpc服务端导致的,去掉就好了,还有一个问题。
我提供的服务不用static也可以正常跑,看文档上说服务方法也要定义成static,请问如果方法不换成static的会有别的影响吗
没什么影响。可能会有一些提示类的php日志
@1:感谢