最近要快速搭建日志采集服务端,想到了基于openresty。这里主要介绍下ngx.exit,ngx.eof,ngx.timer.at这三者的区别。
1.ngx.exit 立即中断当前http请求,后续lua代码将不会再执行,底层socket通道还存在,只要没超过保活时间,如果用了proxypass做子请求,不影响。
2.ngx.eof 立即中断当前http请求,后续的lua代码将继续执行,底层socket通道也立即断开,如果用了proxypass做子请求,子请求也会断开。
3.ngx.timer.at 这个是nginx提供的轻线程,主要做后台任务执行用,一般和ngx.exit配合使用。
下面是自己搭建的openresty性能压测的情况 分别对应上面三种写法,压测工具是apachebench,压测环境是4核4g虚拟机
3900/1并发用户数,6000/20000并发用户数)
3600/1并发用户数,9300/20000并发用户数
4700/1并发用户数,9300/20000并发用户数