laravel-s icon indicating copy to clipboard operation
laravel-s copied to clipboard

以swoole方式运行时,在controller中使用grpc客户端调用,会产生阻塞。无返回也不报错。而php-fpm和cli跑grpc的客户端时没有问题

Open aiqiu506 opened this issue 5 years ago • 9 comments

  1. Your software version (Screenshot of your startup)

    Software Version
    PHP 7.4
    Swoole 4.5.1
    Laravel/Lumen 6.2.0
  2. Detail description about this issue(error/log)

    以swoole方式运行时,在controller中使用grpc客户端调用,会产生阻塞。无返回也不报错。而php-fpm和cli跑grpc的客户端时没有问题

  3. Some reproducible code blocks and steps

    // TODO: your code
    

aiqiu506 avatar Aug 07 '20 02:08 aiqiu506

请提供示例代码。

hhxsv5 avatar Aug 07 '20 05:08 hhxsv5

试试 ini 里打开 grpc.enable_fork_support

https://github.com/grpc/grpc/issues/13412

apollopy avatar Aug 10 '20 07:08 apollopy

试试 ini 里打开 grpc.enable_fork_support

grpc/grpc#13412

打开后,就报错误了 [2020-08-14 10:35:17] [ERROR] worker[9] error: exitCode=0, signal=11

aiqiu506 avatar Aug 14 '20 10:08 aiqiu506

请问您是怎么解决的呢,我也和你遇到了同样的问题

Yii18 avatar Nov 13 '20 06:11 Yii18

用的这个composer 包 googleads/google-ads-php、遇到了调用goole rpc服务器、会产生阻塞。无返回也不报错。而php-fpm和cli跑grpc的客户端时没有问题

Yii18 avatar Nov 13 '20 09:11 Yii18

多半是grpc扩展与swoole不兼容,两个相似的问题: Swoole #3129 Swoole #3198

hhxsv5 avatar Nov 13 '20 09:11 hhxsv5

@hhxsv5 @Yii18 同样的场景,试试在php.ini中增加这个 grpc.enable_fork_support = 1 grpc.poll_strategy = epoll1

echo "grpc.enable_fork_support = 1" >> /etc/php/7.4/cli/php.ini && echo "grpc.poll_strategy = epoll1" >> /etc/php/7.4/cli/php.ini

另一个问题,最新版laravels的使用cleaner不生效 使用3.7.17是正常的[狗头保命]。

Dreamifys avatar Jul 08 '21 06:07 Dreamifys

@corlonmimo 我的解决方式是 WorkerStartEvent的时候

php.ini 里面不写 extension=grpc.so

if (!extension_loaded('grpc')) { dl('grpc.so'); }

Yii18 avatar Oct 19 '21 07:10 Yii18

遇到的两个问题,worker卡住不响应,退出时产生dump;进行下面调整后,暂时能跑:

更新grpc版本1.38+
ini中添加`grpc.enable_fork_support = 1`
禁用cli模式下的Opcache`opcache.enable_cli=0`

ganl avatar Nov 14 '21 12:11 ganl