openresty 报错:lua entry thread aborted: runtime error

本文记录了在OpenResty中遇到的lua entry thread aborted: runtime error问题,详细分析了由于value变量为nil值导致的错误,并提出了在连接字符串时增加nil值判断的解决方案。此外,通过模拟实验探讨了出现该异常后worker process是否存活的问题,得出结论“thread aborted”并不会导致worker进程崩溃,仅表示当前函数执行失败。
摘要由CSDN通过智能技术生成

【1】问题现象

(1)本地openresty系统

(2)报错信息

2019/09/10 08:13:55 [error] 2385#2385: *4 lua entry thread aborted: runtime error: /usr/local/lib/ubcservd/bin/../work/bill_timer.lua:1647: attempt to concatenate global 'value' (a nil value)

(3)分析原因

value变量为nil值的场景预先没有考虑到,导致连接字符串时失败。

(4)解决(容错)方案

打印value值时,增加nil值的判断。如下:

ngx.log(ngx.ERR, 'todo and print value: ' .. (value or 'nil'))

【2】问题追思

如上异常,出现过"lua entry thread aborted"以后,这个worker process(即id为2385)到底还存活吗?

注意,这里所谓的存活是相对于C++程序的空指针导致应用程序异常崩溃而言。

模拟场景,分析过程如下:

(1)具体思路:

设计两个定时器,分别设置不同的时间间隔(第一个时间间隔120s短于第二个180s),启动nginx系统:

当第一个定时器执行异常(如上错误)后,观察第二个定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值