> decode貌似没法避免,不清楚能否把lua table直接在ngx c层面处理后直接返回响应?
不明白你这句话是想表达什么意思?你是想把哪里来的 lua table 处理成给谁的响应?ngx.print 会对传进来的 array 类型的
table 做拼接的。
在 2018年1月17日 下午2:13,Tim kiwi <ji...@gmail.com> 写道:
> 看来lj-lua-stacks.sxx没有对内核地址做处理,另外如果不设置content-length,使用ngx.print返回结果,会多一次系统调用:writev(3,
> [{"0\r\n\r\n", 5}], 1)。
> 我这个场景收到一个请求后会使用resty-http发出多个http请求,需要对response
> body(json)做处理,decode貌似没法避免,不清楚能否把lua table直接在ngx c层面处理后直接返回响应?
>
> On Wednesday, January 17, 2018 at 11:06:10 AM UTC+8, Zexuan Luo wrote:
>>
>> 你可能需要一个 sample-bt 的火焰图,显示下 libc 里面的 writev 占用了多少。
>> 之前我也遇到过 CPU 大部分消耗在 json encode/decode 的情况,最终的解决办法是改写部分业务代码,减少反复的
>> encode/decode。
>>
>> 在 2018年1月16日 下午10:54,Tim kiwi <jin...@gmail.com> 写道:
>> > Hi,
>> > 内核版本 uname -r 3.10.0-693.5.2
>> >
>> > kernel-debuginfo-3.10.0-693.5.2.el7.x86_64、kernel-debuginfo-common-x86_64-3.10.0-693.5.2.el7.x86_64都已安装
>> >
>> > 但是系统调用部分还是没法正确显示,另外即使重新编译内核依然没有显示。火焰图命令:lj-lua-stacks.sxx --skip-badvars
>> > --arg nojit=1 -x
>> >
>> > 另外,从火焰图分析,cpu大部分消耗在ngx.print以及json
>> > encode、decode,使用strace查看系统调用在writev次数相当多,还有优化的空间吗?
>> >
>> > 谢谢。
>> >
>> > --
>> > --
>