从堆栈看是短时间内生成大量字符串导致的,原来做一个JSON接口遇到过,CPU一般是消耗在查找hash和GC上
|
罗玉杰
|
邮箱:lyj_w...@126.com
|
签名由 网易邮箱大师 定制
环境:openresty 1.11.2.1 ,os环境:centos 6.3
问题描述: 业务使用openresty+lua开发。qps高的时候会导致个别nginx worker cpu 100%。使用ngx-lua-bt,得到如下结果:
/hook/redis.lua代码如下:
ngx_http_lua_ngx_now代码如下:
static int
ngx_http_lua_ngx_now(lua_State *L)
{
ngx_time_t *tp;
tp = ngx_timeofday();
lua_pushnumber(L, (lua_Number) (tp->sec + tp->msec / 1000.0L));
return 1;
}
想不明白为啥这个函数会导致cpu 100%,请各位给点思路,谢谢!
gdb 上去cpu 100%的worker,显示堆栈如下:
--