专栏首页云原生压测团队【项目实战-11】进程莫名被杀,真相是...
原创

【项目实战-11】进程莫名被杀,真相是...

【摘要】

Yaf框架是一个c语言编写的PHP框架,它更快、更轻、内存占用更低。项目组本着对性能的追求选择了Yaf框架,由于安全的原因PHP升级到7.3.18,为了兼容PHP,将Yaf升级到3.2.3。Yaf框架的bug导致PHP进程core。尽管从表象上看就是一个core,但整个排查解决的过程还是遇到了不少困难,这里记录了这一次线上core的整个排查过程,希望能够帮助遇到类似问题的同学。

【背景】

因为php 7.0.9有安全漏洞,升级到php 7.3.18,PHP的Yaf框架3.2.3版本导致接口服务出现502。

现象:达到2000 qps时有15台机器出现502的问题,重启PHP后问题不重现。

问题影响: 15%的请求会出502

【问题现象】

通过strace attach到进程看到发生了segfault,进程被系统信号SIGSEGV强杀。

【问题分析与排查思路】

进程被SIGSEGV强杀,第一反应是去找coredump,cordump是进程在退出前由操作系统把进程当前的内存转存到一个core文件中。core文件包含程序运行时的内存信息,含寄存器状态、堆栈指针、内存管理信息、操作系统flags。core文件中保留了进程被杀的“凶案”现场,找到core文件几乎就等于抓住了“凶手”。经过一顿搜索并未发现生成core。

core文件未生成的原因:

  1. 系统不允许生成core。
  2. core文件存储路径没有权限。
  3. 进程捕获了SIGSEGV信号。
  4. ...

系统不允许生成core

ulimit -a 显示core file size为unlimited,系统允许生成core文件。排除

core文件存储路径没有权限

查看core文件目标存储路径,确认进程有权限写入。排除

进程捕获了SIGSEGV信号

查看/proc/pid/status发现sigCgt为0x0000000184004a07,SIGSEGV并未被进程捕获。排除

linux支持对每个进程进行dumpable标记,dumpable被设置为SUID_DUMP_DISABLE(0) 的进程不会输出core。PHP 7之后进程默认不会输出core。

修改进程dumpable标记位:

尝试用GDB的方式来设置CORE的标记位,让PHP在异常的情况下能打DUMP gdb -p pid 执行call prctl(4,1)。第一个参数4表示PR_SET_DUMPABLE,第二个参数1表示SUID_DUMP_USER,经验证可以输出coredump

找到了core文件就等于抓住了“凶手”,从堆栈中分析可以看到挂在Yaf。

问题根因

Yaf 3.2.3版本,请求uri中出现两个相同参数,进程会被SIGSEGV信号杀掉。

github issues:

https://github.com/laruence/yaf/issues/490 (请求web服务时, uri参数两个参数名相同出现 502)

https://github.com/laruence/yaf/issues/491 (从yaf3.0.9升级到3.2.4出现php-fpm进程被SIGSEGV信号杀掉)

解决方案

回退yaf版本到3.0.9,该版本经验证没有上述bug且可兼容php 7.3.18版本。

【总结】

项目在使用第三方扩展中遇到问题是经常会出现的问题,在进行选型时要充分了解第三方扩展及使用版本的稳定性避免踩坑。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【必看】社区文章目录

    Nanako
  • 【杀人机器人一击毙命】俄罗斯不顾联合国禁令强势推进军用机器人计划(视频)

    作者:全月 【新智元导读】11月,在日内瓦举办的联合国特定常规武器公约会议上,一段骇人听闻的视频发布,视频中类似杀人蜂的小型人工智能机器人通过面部识别系统辨别射...

    新智元
  • 俄罗斯不顾禁令推进“杀人机器人”计划,几十人可一击致命

    11月,在日内瓦举办的联合国特定常规武器公约会议上,一段骇人听闻的视频发布,视频中类似杀人蜂的小型人工智能机器人通过面部识别系统辨别射杀对象,迅敏将其击毙。尽管...

    企鹅号小编
  • 机器人伤人事件——没有“意识”的它只是人类操控下的“傀儡”

    镁客网
  • 【榜单】史上最经典36部AI电影大放送

    新智元
  • 一个“人”碾压100个剑桥高材生,更可怕的是……

    01 又一块多米诺骨牌倒下了。 围棋、翻译、医疗、证券.......瞠目结舌地,人类看着原本只属于自己的疆域,一片一片地被人工智能蚕食。 刚刚又沦陷的,是律师行...

    企鹅号小编
  • 北大主场夺金ACM-ICPC全球总决赛,总教练罗国杰分享背后“秘笈”

    昨天(4月19日)下午,第42届ACM-ICPC国际大学生程序设计竞赛全球总决赛,在北京大学邱德拔体育馆举行,这也是2005年上海、2010年哈尔滨之后,中国第...

    量子位
  • 记一次诡异的Bug修复——App自启动

    在上一版本App临发版之前,QA和PM同学同时报了一个严重的Bug:App退出之后会自动重新启动,也就是用户关不了App。开发者梦寐以求的应用常驻就这么被莫名其...

    用户2898788
  • “战术竞技类”外挂打击已开始!揭秘腾讯We Test游戏安全服务新动作!

    商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。

    WeTest质量开放平台团队
  • “战术竞技类”游戏外挂打击已开始!WeTest正式接入安全服务MTP

    11月22日,腾讯官方宣布正式与PUBG公司达成战略合作,获得《Playerunknown's Battlegrounds》(以下简称《PUBG》)在中国的独家...

    WeTest质量开放平台团队
  • 汽车大V@晴空霹雳张大爷火了,会成为车评界的莫博士吗?

    这几天微博上有一个车评人火了,为流浪狗让路的车评人@晴空霹雳张大爷,不只是上了微博热搜,还得到了人民网等权威媒体的报道。 ? 不过,我更关注的是@晴空霹雳张大爷...

    罗超频道
  • 你想象不到人工智能有多可怕

    一 多米诺骨牌,正在一块接一块地迅速倒塌! 围棋、翻译、医疗、证券.......瞠目结舌地,人类正在看着原本只属于自己的疆域,正在一片一片地被人工智能蚕食,大幅...

    企鹅号小编
  • AI溃败,被Dota2职业战队打蠢!独家专访OpenAI:我们发现一个Bug

    今天早间进行的Ti8 OpenAI表演赛上,人类职业战队paiN Gaming,在5v5的Dota2人机大战首场战斗中,轻松击败OpenAI Five战队。

    量子位
  • 【杀人机器之争】卫报评马斯克等116名AI专家呼吁禁止“杀手机器人”

    【新智元导读】马斯克等116名全球人工智能和机器人领域的专家近日在墨尔本举行的人工智能国际会议上发布联名公开信,呼吁联合国采取行动禁止“杀手机器人”,引发广泛热...

    新智元
  • 【重磅】扬名UEC杯,腾讯围棋AI“绝艺”夺冠之路全回顾

    AI科技评论消息,今天(3月19日)下午,腾讯围棋AI“绝艺”11连胜夺冠UEC杯!UEC杯是世界权威的电脑围棋大赛,2007年始于日本,是最具传统和权威的计算...

    AI科技评论
  • linux服务器被入侵查询木马

    Linux.BackDoor.Gates.5 链接:https://forum.antichat.ru/threads/413337/

    拓荒者
  • 有史以来最佳22部最佳人工智能和机器人电影

    感受到了人工智能技术对智能手机,计算机,工业和医疗保健部门的影响。在此列表中,将记住在电影界指导生活和技术世界的人工智能的思考。22部能够深刻反映人工智能技术的...

    代码医生工作室
  • 塔荐 | 10部电影告诉你,未来人工智能领域投资空间有多大

    导读:10部电影告诉你 未来人工智能领域投资空间有多大 我们的未来究竟是什么样子?人工智能将对未来带来怎样的改变?前不久,对于人工智能发展前景,特斯拉CEO埃隆...

    灯塔大数据
  • 最潮万圣节过法,脱掉COS装直接VR见!

    VRPinea

扫码关注云+社区

领取腾讯云代金券