开发者中心

定制

目录

构建定制

前面的章节我们简要介绍了如何构建库,在这一章中,我们将深入自定义构建选项,为特定使用场景定制一个最优构建。

以下所有的自定义选项都在init.mk文件中。

  1. SR_PLUGIN_LUA=0

    Lua 插件支持开关,缺省为 0,关闭 Lua 支持。设置为 1 则打开 Lua 插件支持。 记住提供必须的 Lua C 库并添加 CPPFLAGSCXXFLAGSLDFLAGSLDLIBS 等编译和连接标志。

  2. SR_PROTO_HTTP_VERSION=1.1

    HTTP 版本号,缺省为 1.1。如果不支持 HTTP/1.1 则设置为 1.0。

  3. SR_SOCK_RXBUF_SIZE=1024

    SrNetSocket 最大接收缓存区,缺省为 1024 字节。 这个数字设置了 SrNetSocket recv 方法阻塞等待相应的最大字节数。此参数只影响 SrNetSocket 的接收缓冲区。

  4. SR_AGENT_VAL=5

    SrAgent 的轮询时间间隔,缺省5毫秒。 内部实现上,SrAgent 通过轮询过期的 SrTimer 以及进入 SrQueue 的消息安排所有的 SrTimerHandlerSrMsgHandler ,此参数代表连续两次轮询之间的间隔。当此参数设置过高,agent可能响应迟缓,设置过低时会浪费很多CPU周期。这是一个对每个设备需要仔细调优的妥协参数。

  5. SR_REPORTER_NUM=512

    合并请求的最大值,缺省512。为了节省流量,SrReporter 有一种机制合并很多消息到一个请求然后一次发送。此值表示可以合并的最大消息数。

  6. SR_REPORTER_VAL=400

    两次连续合并最大间隔时间,缺省400毫秒。当合并请求,SrReporter在设定的超时时间内等待连续消息。如果下一个消息超时后产生, SrReporter 将停止等待循环并开始发送已经合并的消息。如果值设置高一些,可以做更多合并,节省流量,如果设置低一些agent有更快的响应时间,因为不用等下一个消息。这是一个对特定应用场景需要仔细调优的妥协参数

  7. SR_REPORTER_RETRIES=9

    发送失败最大重试次数,缺省9次。 遇到临时网络失效, SrReporter 实现了指数等待和多次重试机制。第一次尝试失败,等待1秒重试,如果第二次尝试失败,等待2秒,第三次尝试失败等待4秒,等等,知道用完设定的重试次数。注意,当 SrReporter 进入重试循环,通过 SrAgent 发送的消息将在发出 SrQueue 排队,直到 SrReporter 成功发送合并请求或用完重试次数。

  8. SR_CURL_SIGNAL=1

    是否允许libcurl安装信号处理函数,缺省为1,允许libcurl安装信号处理函数。特定版本的libcurl和DNS解析器一起构建时有一个bug,当DNS查找超时时随机崩溃。如果遇到这个问题,可以通过禁止libcurl安装信号处理函数避免。但是,libcurl将无法终止DNS查找,推荐的方案是libcurl和异步DNS解析器一起构建。

  9. SR_SSL_VERIFYCERT=1

    使用HTTPS时是否校验服务器端证书,缺省为1。许多嵌入式设备没有安装CA证书用HTTPS通讯时无法校验服务器端证书。一种解决方法是,设置这个宏为0禁止校验。

  10. SR_FILEBUF_PAGE_SCALE=3

    为文件支持的缓冲区设置页面大小的缩放比例,默认为3。当为SrReporter启用filebuf功能时,消息以一页的最小单位而不是单个消息进行管理,以便于高效的缓冲区管理。 因此,较大的页面大小将缓冲更多的消息,但消息也被以较大的块丢弃。 相反,较小的页面大小缓冲较少的消息,但是消息也以较小的块丢弃。 可能的页面缩放比例和相应的页面大小可以在表1中找到。

Table 1:页面缩放比例和相应的filebuf页面大小列表。
页面缩放比例 页面大小
0 512 B
1 1 KB
2 2 KB
3 4 KB
   
4 8 KB
5 16 KB
6 32 KB
7 64 KB