首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
worker进程出现随机卡死现象
### 问题描述 生产环境时,worker进程会出现cpu 占用过高, 之后进程出现卡死现象 ### Swoole版本,PHP版本,以及操作系统版本信息 用的hyperf1.1 框架, swoole 版本4.5+ PHP版本7.2.33 操作系统版本: docker Alpine Linux 3.9 ### 相关代码 堆栈信息  进程一直在睡眠  cpu 占用 相比其它worker 进程过高, 只有cpu占用过高的进程会发现卡死现象  ### 你期待的结果是什么?实际看到的错误信息又是什么? 在生产环境观察几天后发现, worker 进程 每40分钟左右会重启一次, 但是某个worker 进程 在被卡死的时候 不会被重启, 需要手动杀死, 卡死的进程会一直占用CPU不释放
发布于5年前 · 37 次浏览 · 来自
开发框架
rock2018
### 问题描述 生产环境时,worker进程会出现cpu 占用过高, 之后进程出现卡死现象 ### Swoole版本,PHP版本,以及操作系统版本信息 用的hyperf1.1 框架, swoole 版本4.5+ PHP版本7.2.33 操作系统版本: docker Alpine Linux 3.9 ### 相关代码 堆栈信息  进程一直在睡眠  cpu 占用 相比其它worker 进程过高, 只有cpu占用过高的进程会发现卡死现象  ### 你期待的结果是什么?实际看到的错误信息又是什么? 在生产环境观察几天后发现, worker 进程 每40分钟左右会重启一次, 但是某个worker 进程 在被卡死的时候 不会被重启, 需要手动杀死, 卡死的进程会一直占用CPU不释放
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2020-09-30
rock2018
 根据堆栈信息排查 swoole 的138 行的代码 怀疑是参数传入有问题,排查自身服务的代码后发现:  目前怀疑是变量赋值为null, 再通过& 去引用, 此时swoole 调用该代码 _this->private_data_ 的值 实际是null void Context::context_func(void *arg) { Context *_this = (Context *) arg; _this->fn_(_this->private_data_); _this->end_ = true; _this->swap_out(); } 先记录下来,明天验证一下
赞
0
回复