hhxsv5 / laravel-s

LaravelS is an out-of-the-box adapter between Laravel/Lumen and Swoole.
MIT License
3.83k stars 473 forks source link

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

Open aiqiu506 opened 4 years ago

aiqiu506 commented 4 years ago
  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
hhxsv5 commented 4 years ago

请提供示例代码。

apollopy commented 4 years ago

试试 ini 里打开 grpc.enable_fork_support

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

aiqiu506 commented 4 years ago

试试 ini 里打开 grpc.enable_fork_support

grpc/grpc#13412

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

Yii18 commented 3 years ago

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

Yii18 commented 3 years ago

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

hhxsv5 commented 3 years ago

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

Dreamifys commented 3 years ago

@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是正常的[狗头保命]。

Yii18 commented 3 years ago

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

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

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

ganl commented 2 years ago

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

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