4.agent配置详解

所有的代码分析基于pinpoint 1.6.2

常用配置
  1. profiler.sampling.enable=true

    是否进行采样,true表示开启采样,如果关闭采样,将不进行trace

  2. profiler.sampling.rate=100

    采样率:表示每profiler.sampling.rate次请求,进行一次trace

    例如,100表示1/100,1表示每次请求都trace

  3. profiler.io.buffering.enable=true

    是否开启span缓冲,默认开启(即trace的span先缓冲再发送,减轻发送的压力)

  4. profiler.io.buffering.buffersize=20

    缓冲的span个数

  5. profiler.xx.xx=true

    是否开启该插件的trace,例如tomcat:

    profiler.tomcat.enable=true

通信相关
  1. profiler.collector.ip=trace.tv.sohuno.com

    agent与collector通信的ip地址,不能是ip列表,只能是单个ip或者域名

  2. span发送(UDP协议)

    profiler.collector.span.ip=${profiler.collector.ip}
    profiler.collector.span.port=9996
    
    # 下面这些选项在3.agent通信里说过,这里不再解释
    profiler.spandatasender.write.queue.size=5120
    #profiler.spandatasender.socket.sendbuffersize=1048576
    #profiler.spandatasender.socket.timeout=3000
    profiler.spandatasender.chunk.size=16384
    profiler.spandatasender.socket.type=OIO
    
  3. agent stat发送(UDP协议)

    profiler.collector.stat.ip=${profiler.collector.ip}
    profiler.collector.stat.port=9995
    
    # 下面这些选项与spandatasender的类似,这里不再解释
    profiler.statdatasender.write.queue.size=5120
    #profiler.statdatasender.socket.sendbuffersize=1048576
    #profiler.statdatasender.socket.timeout=3000
    profiler.statdatasender.chunk.size=16384
    profiler.statdatasender.socket.type=OIO
    
  4. agent info发送(TCP协议)

    profiler.collector.tcp.ip=${profiler.collector.ip}
    profiler.collector.tcp.port=9994
    
    # 发送间隔,单位毫秒,默认每5分钟发送一次
    profiler.agentInfo.send.retry.interval=300000
    
  5. agent tcp相关配置

    # agent是否支持接受command
    profiler.tcpdatasender.command.accept.enable=true
    # agent是否支持活跃线程command
    profiler.tcpdatasender.command.activethread.enable=true
    # agent是否支持活跃线程数量command(dashboard里选择实时监控,活跃线程数展示)
    profiler.tcpdatasender.command.activethread.count.enable=true
    # agent是否支持线程dump command
    profiler.tcpdatasender.command.activethread.threaddump.enable=false
    # agent是否支持活跃轻量线程command
    profiler.tcpdatasender.command.activethread.threadlightdump.enable=true
    

    关于profiler.tcpdatasender.command.activethread.enable:它是总开关,详见如下代码

    public ActiveThreadService(ProfilerConfig profilerConfig, ActiveTraceRepository activeTraceRepository) {
        serviceList = new ArrayList<ProfilerCommandService>();
        if (!profilerConfig.isTcpDataSenderCommandActiveThreadEnable()) {
            return;
        }
        if (profilerConfig.isTcpDataSenderCommandActiveThreadCountEnable()) {
            serviceList.add(new ActiveThreadCountService(activeTraceRepository));
        }
        if (profilerConfig.isTcpDataSenderCommandActiveThreadLightDumpEnable()) {
            serviceList.add(new ActiveThreadLightDumpService(activeTraceRepository));
        }
        if (profilerConfig.isTcpDataSenderCommandActiveThreadDumpEnable()) {
            serviceList.add(new ActiveThreadDumpService(activeTraceRepository));
        }
    }
    

    关于活跃轻量线程的理解

    一般情况下,线程的dump需要使用MBean的方式(ThreadMXBean),如果在高负载的线上环境执行,可能会造成某些性能问题。

    pinpoint会让trace对象持有当前线程,同时会统计活跃的trace,这样通过trace即可统计出线程的状态,比如线程名,id,状态,而不用获取整个堆栈。

trace自身相关
  1. profiler.interceptorregistry.size=8192

    最大支持多少个拦截器注册,默认8192个

    所谓拦截器注册,是指plugin里注册的拦截器,以jetty插件的代码为例:

    handleMethodEditorBuilder.addInterceptor("com.navercorp.pinpoint.plugin.jetty.interceptor.ServerHandleInterceptor", va(config.getJettyExcludeUrlFilter()));
    
  2. profiler.callstack.max.depth=64

    一个span中,持有的callstack的最大深度,span是一系列本地方法的调用,也就是调用的最大深度。

    这块相关的内容可以参考2.agent追踪的trace结束部分。

  3. profiler.interceptor.exception.propagate=false

    拦截器遇到异常后,是否需要抛出,默认不抛出,即应用程序不会接到拦截器抛出的异常,但是日志里会进行记录。

  4. profiler.instrument.engine=ASM

    字节码注入引擎,默认为ASM,还支持JavaAssist

  5. java字节码dump相关

    # java bytecode dump option
    bytecode.dump.enable=false
    #bytecode.dump.classlist=com.pinpoint.user.UserService,com.pinpoint.debug.TestClass
    bytecode.dump.classlist=
    bytecode.dump.bytecode=false
    bytecode.dump.verify=false
    bytecode.dump.asm=false
    
  6. profiler.entrypoint=

    用户自定义trace的方法,逗号分隔列表,例如:

    foo.bar.MyClass.myMethod, foo.bar.MyClass.anotherMethod

各个插件自身的配置

各个插件处理可以是否禁用外,还有一些额外的配置可以使用,这里不再一一列举

未使用的配置

可能是由于历史原因,有一些配置并没有看到使用的地方,在这里列出来

  1. profiler.enable=true

    是否开启trace

  2. profiler.jvm.collect.interval=1000

  3. profiler.applicationservertype=TOMCAT

    servertype会自动检测,不用指定

  4. profiler.type.detect.order=

    servertype检测顺序,不用指定

  5. profiler.plugin.disable

    禁止插件的完成类名,一般每个插件单独设置,这里不使用

  6. profiler.include=

    用户指定要trace哪几个类,已废弃

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nginx.conf是Nginx的主配置文件,它用于指定Nginx的全局配置和虚拟主机配置。下面是nginx.conf配置文件的详解: 1. 全局块 ``` user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; ``` - user:指定Nginx的运行用户 - worker_processes:指定Nginx的工作进程数,auto表示自动根据CPU核数来确定 - error_log:指定Nginx的错误日志路径 - pid:指定Nginx的进程ID文件路径 2. events块 ``` events { worker_connections 1024; } ``` - worker_connections:指定每个工作进程可以同时处理的最大连接数 3. http块 ``` http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; keepalive_timeout 65; gzip on; include /etc/nginx/conf.d/*.conf; } ``` - include:指定Nginx的MIME类型 - default_type:指定默认MIME类型 - log_format:指定Nginx的日志格式 - access_log:指定Nginx的访问日志路径和格式 - sendfile:指定是否开启sendfile技术,开启可以提高文件传输效率 - tcp_nopush:指定是否开启tcp_nopush技术,开启可以提高文件传输效率 - keepalive_timeout:指定客户端与Nginx之间的连接超时时间 - gzip:指定是否开启gzip压缩 - include:指定包含其他配置文件的路径,可以用于虚拟主机的配置 4. server块 ``` server { listen 80; server_name example.com; root /var/www/example.com; index index.html; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; location = /404.html { internal; } } ``` - listen:指定Nginx监听的端口号 - server_name:指定虚拟主机的域名 - root:指定虚拟主机的根目录 - index:指定虚拟主机默认访问的文件名 - location:指定虚拟主机的URL匹配规则和处理方式 - error_page:指定错误页面的URL地址 - internal:指定只能在Nginx内部访问该URL 以上就是nginx.conf配置文件的详解
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值