问: 如何安装qtrace?

答:

1 - 安装@qnpm/qtrace-node中间件; 2 - [安装应用上报](https://wiki.corp.qunar.com/confluence/pages/viewpage.action?pageId=347036252; 3 - 替换项目中的请求库为q-fetch

问: qtrace和软路由有什么关系?

答:软路由只是在qtrace基础上增加了几个机器的标识参数,用于搭建测试环境的时候动态创建,只新建有变动的服务,可以节省服务器资源

问: 什么时候会丢失trace数据?

答:

1 - trace中间件和q-fetch请求库之间做上下文绑定的方案,目前依赖的是node自带的async_hooks来追踪异步任务,async_hooks本身会消耗大量的内存,我当前的处理是

一:清理一个请求3秒内未完成的异步跟踪,丢弃这部分trace(因为3秒内未完成说明服务器压力比较大了,消耗不及时)(这个大小可在config.qtrace.js配置文件中根据业务需求自行配置)

二:同时提供了一个业务可配置的参数memoryLimit来限制内存,当前node使用的内存达到业务设置的上限的时候不再记录trace,等内存降到memoryLimit以下的时候才继续记录trace。(这个大小可在config.qtrace.js配置文件中根据业务需求自行配置)

问: trace能自动备份和清理过期日志吗?

答: 能,目前是安装配置文件中业务设置的大小去备份,每一分钟check一次,达到了业务设置的大小就会备份。 自动清理过期日志是每30分钟check一次,按照配置文件中配置的时间进行清理,比如你配置文件中设置的delBackUpTime:1代表删除一小时前的备份日志

问: 集成trace对业务性能有什么影响吗?

答: 对业务性能的影响主要表现在内存的消耗上,在持续并发的时候占用内存会升高(业务可根据配置文件中的参数进行限制)。并发不高的时候影响不大