精华内容
下载资源
问答
  • tomcat统计QPS

    2019-09-28 20:34:57
    利用tomcat的access log # 设定log的目录,默认: logs server.tomcat.accesslog.directory 是否开启access log,默认:...假设访问日志文件名字为access.log,请求方式GET,请求接口/hello cat access.log |grep 'GET ...

    利用tomcat的access log

    # 设定log的目录,默认: logs
    server.tomcat.accesslog.directory
    是否开启access log,默认: false
    server.tomcat.accesslog.enabled
    
    

    假设访问日志文件名字为access.log,请求方式GET,请求接口/hello
    cat access.log |grep 'GET /hello '|cut -d ' ' -f4|uniq -c|sort -n -r

    输出:

    2 [27/Dec/2018:20:40:44
    1 [27/Dec/2018:20:47:58
    1 [27/Dec/2018:20:47:42
    1 [27/Dec/2018:20:41:57
    
    • grep ‘GET /hello’ : 将文件内容按照GET /hello 进行过滤
    • cut -d ’ ’ -f4 : 过滤出来的内容按照空格进行分割,取第四列内容
    • uniq -c : 每列旁边显示该行重复出现的次数
    • sort -n -r : 依照数值的大小排序
    展开全文
  • 由于公司的业务比较特殊,对速度比较在意,客户最近反应我们的平台时间比较久,处理一个请求十秒左右才...配置nginx统计请求和后端服务Tomcat服务响应时间 编辑nginx的配置文件nginx.conf log_format main '$r...

    由于公司的业务比较特殊,对速度比较在意,客户最近反应我们的平台时间比较久,处理一个请求十秒左右才返回,领导要求找出原因,我想让nginx日志记录请求处理用了多长时间,后端处理用了多长时间,总共用了多长时间,哪里出现的瓶颈好进行针对性解决

    配置nginx统计请求和后端服务Tomcat服务响应时间

    编辑nginx的配置文件nginx.conf

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
               '$status $body_bytes_sent "$http_referer" '
               '"$http_user_agent" "$http_x_forwarded_for" "$upstream_response_time" "$request_time"';
    

      

    上面的日志是我找的默认形式的,在你原先的日志基础就加入两点即可

    $request_time    

    官网描述:request processing time in seconds with a milliseconds resolution; time elapsed between the first bytes were read from the client and the log write after the last bytes were sent to the client 。

    说明:就是指从接受用户的第一个字节到发送完响应数据的时间,即包括接收请求数据时间、程序响应时间、输出响应时间等

    $upstream_response_time     

    官网描述:keeps times of responses obtained from upstream servers; times are kept in seconds with a milliseconds resolution. Several response times are separated by commas and colons like addresses in the $upstream_addr variable

    说明:是指从nginx向后端建立连接开始到后端处理完数据然后关闭连接为止的时间

     

    从上面的描述可以看出$request_time可能会比$upstream_response_time值大一点,特别是使用POST方式传递参数时,因为nginx会把request body缓存住,接受完毕后才会把数据一起发送给后端。所以如果用户网络较差,或者传递数据较大时,$request_time会比$upstream_response_time的值大很多

     

    Tomcat:

    Tomcat则是通过改server.xml的日志格式%D %T统计请求响应时间

     

            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log." suffix=".txt"
                   pattern="%h %l %u %t "%r" %s %b %D %F" />
    

    %D - 官方解释:Time taken to process the request, in millis,处理请求的时间,以毫秒为单位

    %T - 官方解释:Time taken to process the request, in seconds,处理请求的时间,以秒为单位

    %F - 官方解释:Time taken to commit the response, in millis,提交响应的时间,以毫秒为单位

    详细说明:http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Access_Logging

     

    使用awk文本处理命令辅助统计access.log

    统计nginx访问日志access.log的每分钟请求数

    awk -F: '{count[$2":"$3]++} END {for (minute in count) print minute, count[minute]}' ./access.log | sort > count.log
    

     

     

    [root@60 logs]# cat count.log 
    01:18  102
    01:38  77
    02:10  53
    02:20  89
    02:28  66
    02:43  123
    02:44  44
    02:48  53
    03:12  26
    04:07  90
    04:09  21
    ············
    

      

     

    统计请求响应时间超过10秒的记录

    awk '($NF > 10){print $0}' ./access.log > t10_20180525.log
    

      

    推荐参考:

    https://www.ibm.com/developerworks/cn/linux/l-cn-awk-httplog/

     

    转载于:https://www.cnblogs.com/LuckWJL/p/9086823.html

    展开全文
  • tomcat Access Log 统计相应时间

    千次阅读 2015-02-04 13:53:24
    Access Log Valve用来创建日志文件,格式与标准的web server日志文件相同。...Access Log Valve的很多配置和行为特性与File ...Access Log Valve可以和任何Catalina容器关联,记录该容器处理的所有请求。 例子如下:

    Access Log Valve用来创建日志文件,格式与标准的web server日志文件相同。可以使用用日志分析工具对日志进行分析,跟踪页面点击次数、用户会话的活动等。Access Log Valve的很多配置和行为特性与File Logger相同,包括每晚午夜自动切换日志文件。Access Log Valve可以和任何Catalina容器关联,记录该容器处理的所有请求。
    例子如下:
    <Valve className="org.apache.catalina.valves.AccessLogValve"
    directory="logs" prefix="localhost_access_log." suffix=".txt"
    pattern="%{X-Forwarded-For-Pound}i %l %u %t "%r" %s %b %T"%{HTTP_X_UP_CALLING_LINE_ID}i" "%{x-up-calling-line-id}i""%{User-Agent}i"" resolveHosts="false"/>

    className

    实现的Java类名。必须被设置成org.apache.catalina.valves.AccessLogValve。

    directory

    存放日志文件的目录,可以是相对路径或者绝对路径。如果使用相对路径,是指相对于 $CATALINA_HOME的路径。如果不指定directory属性,缺省值是“logs”(相对于 $CATALINA_HOME)

    pattern

    需要记录的请求/响应不同信息域的格式布局。如果是“common”或者“combine”,说明选择标准格式。下面会有关于配置这个属性的更多信息。

    prefix

    日志文件名的前缀。如果没有指定,缺省值是“access_log.”。如果不想使用前缀,使用长度为0的字符串。

    resolveHosts

    将远端主机的IP地址通过DNS查询转换成主机名,设为true。如果为false,忽略DNS查询,报告远端的IP地址。

    suffix

    日志文件名的后缀。如果没有指定,缺省值是“”。如果不想使用后缀,使用长度为0的字符串。

    rotatable

    缺省值为true,用来决定日志是否翻转的标志。如果为false,日志文件永远不翻转,并且忽略fileDataFormat。要谨慎使用。

    condition

    打开条件日志。如果设置了这个属性,只有在ServletRequest.getAttribute()是null的时候,才会为请求创建日志。比如,如果condition设为junk,则只有在Servlet.getAttribute("junk")==null的时候,才会记录这个请求。使用过滤器,可以很容易设置(或者取消设置)不同请求的属性。

    fileDateFormat

    允许在日志文件名称中使用定制的日期格式。日志的格式也决定了日志文件翻转的频率。如果想每个小时翻转一次,将这个值设为yyyy-MM-dd.HH


    pattern属性值由字符串常量和pattern标识符加上前缀"%"组合而成。pattern标识符加上前缀"%",用来代替当前请求/响应中的对应的变量值。目前支持如下的pattern:

    ·        %a - 远端IP地址

    ·        %A - 本地IP地址

    ·        %b - 发送的字节数,不包括HTTP头,如果为0,使用"-"

    ·        %B - 发送的字节数,不包括HTTP头

    ·        %h - 远端主机名(如果resolveHost=false,远端的IP地址)

    ·        %H - 请求协议

    ·        %l - 从identd返回的远端逻辑用户名(总是返回 '-')

    ·        %m - 请求的方法(GET,POST,等)

    ·        %p - 收到请求的本地端口号

    ·        %q - 查询字符串(如果存在,以 '?'开始)

    ·        %r - 请求的第一行,包含了请求的方法和URI

    ·        %s - 响应的状态码

    ·        %S - 用户的session ID

    ·        %t - 日志和时间,使用通常的Log格式

    ·        %u - 认证以后的远端用户(如果存在的话,否则为'-')

    ·        %U - 请求的URI路径

    ·        %v - 本地服务器的名称

    ·        %D - 处理请求的时间,以毫秒为单位

    ·        %T - 处理请求的时间,以秒为单位

    运行结果

    常使用web服务器的朋友大都了解,一般的web server有两部分日志:
        一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息
        二是访问日志信息,它记录的访问的时间,IP,访问的资料等相关信息。
       
    现在我来和大家介绍一下利用tomcat产生的访问日志数据,我们能做哪些有效的分析数据?

    首先是配置tomcat访问日志数据,默认情况下访问日志没有打开,配置的方式如下:
        编辑${catalina}/conf/server.xml文件.注:${catalina}是tomcat的安装目录
        把以下的注释(<!-- -->)去掉即可。
                <!--
            <ValveclassName="org.apache.catalina.valves.AccessLogValve"
                    directory="logs"  prefix="localhost_access_log."suffix=".txt"
                    pattern="common" resolveHosts="false"/>
            -->
        其中 directory是产生的目录 tomcat安装${catalina}作为当前目录
        pattern表示日志生产的格式,common是tomcat提供的一个标准设置格式。其具体的表达式为 %h %l %u %t "%r"%s %b
        但本人建议采用以下具体的配置,因为标准配置有一些重要的日志数据无法生。
            %h %l %u %t "%r" %s %b %T 
    具体的日志产生样式说明如下(从官方文档中摘录):
        * %a - Remote IP address
        * %A - Local IP address
        * %b - Bytes sent, excluding HTTP headers, or '-' if zero
        * %B - Bytes sent, excluding HTTP headers
        * %h - Remote host name (or IP address if resolveHosts isfalse)
        * %H - Request protocol
        * %l - Remote logical username from identd (always returns'-')
        * %m - Request method (GET, POST, etc.)
        * %p - Local port on which this request was received
        * %q - Query string (prepended with a '?' if it exists)
        * %r - First line of the request (method and request URI)
        * %s - HTTP status code of the response
        * %S - User session ID
        * %t - Date and time, in Common Log Format
        * %u - Remote user that was authenticated (if any), else '-'
        * %U - Requested URL path
        * %v - Local server name
        * %D - Time taken to process the request, in millis
        * %T - Time taken to process the request, in seconds

    There is also support to write information from the cookie, incoming header, theSession or something else in the ServletRequest. It is modeled after the apachesyntax:

        * %{xxx}i for incoming headers
        * %{xxx}c for a specific cookie
        * %{xxx}r xxx is an attribute in the ServletRequest
        * %{xxx}s xxx is an attribute in the HttpSession


    现在我们回头再来看一下下面这个配置 %h %l %u %t "%r"%s %b %T 生产的访问日志数据,我们可以做哪些事?
    先看一下,我们能得到的数据有:
        * %h 访问的用户IP地址
        * %l 访问逻辑用户名,通常返回'-'
        * %u 访问验证用户名,通常返回'-'
        * %t 访问日时
        * %r 访问的方式(post或者是get),访问的资源和使用的http协议版本
        * %s 访问返回的http状态
        * %b 访问资源返回的流量

        * %T 访问所使用的时间


    在tomcat下的conf/server.xml中的<Host>段加上accessLog
    <Valve  className="org.apache.catalina.valves.AccessLogValve"
                 directory="logs" prefix="access_log" fileDateFormat="yyyy-MM-dd.HH"
                 suffix=".log" rotatable="true" resolveHosts="false"
                 pattern="%a %t %H %S %r %B %D %s"/>
    在做压力测试的时候,请将webapps项目下的log4j.xml文件的日志级别改为WARN,并且里面的事件日志也改为WARN,减少日志输出量,免得影响测试.
    accesslog始终打开,这个不会影响。压力测完了,再把事件日志打开。
    展开全文
  • Linux下查看Apache和tomcat请求

    千次阅读 2013-03-18 12:05:38
    在Linux下查看Apache的负载情况,最简单有有效的方式就是查看Apache Server Status,在没有开启Apache Server Status的情况下,或安装的是其他的Web Server,比如Nginx的时候,下面的命令就体现出作用了...统计httpd
    在Linux下查看Apache的负载情况,最简单有有效的方式就是查看Apache Server Status,在没有开启Apache Server Status的情况下,或安装的是其他的Web
     Server,比如Nginx的时候,下面的命令就体现出作用了。
    

    ps -ef|grep httpd|wc -l命令
    #ps -ef|grep httpd|wc -l
    1388
    统计httpd进程数,连个请求会启动一个进程,使用于Apache服务器。
    表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整。

    netstat -nat|grep -i "80"|wc -l命令
    #netstat -nat|grep -i "80"|wc -l
    4341
    netstat -an会打印系统当前网络链接状态,而grep -i "80"是用来提取与80端口有关的连接的, wc -l进行连接数统计。
    最终返回的数字就是当前所有80端口的请求总数。

    netstat -na|grep ESTABLISHED|wc -l命令
    #netstat -na|grep ESTABLISHED|wc -l
    376
    netstat -an会打印系统当前网络链接状态,而grep ESTABLISHED 提取出已建立连接的信息。 然后wc -l统计。
    最终返回的数字就是当前所有80端口的已建立连接的总数。

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'命令
    #netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    FIN_WAIT_1 286
    FIN_WAIT_2 960
    SYN_SENT 3
    LAST_ACK 32
    CLOSING 1
    CLOSED 36
    SYN_RCVD 144
    TIME_WAIT 2520
    ESTABLISHED 352
    返回参数的说明如下:
    SYN_RECV表示正在等待处理的请求数;
    ESTABLISHED表示正常数据传输状态;
    TIME_WAIT表示处理完毕,等待超时结束的请求数.

    展开全文
  • 统计Jmeter平均响应时间:  egrep --color 'true' 1.jtl |awk -F\" 'BEGIN{load=0;latency=0;count=0;}{load+=$2;latency+=$4;count+=1}END{print "...统计Tomcat访问日志内的各种访问请求...
  • 通过Nginx,Tomcat访问日志(access log)记录请求耗时 一、Nginx通过$upstream_response_time $request_time统计请求和后台服务响应时间 nginx.conf使用配置方式: log_format main '$remote_addr - $remote_...
  • tomcat自带的配置可以对所有访问的ip进行统计,并记录到日志中,但是如果想要 对请求做一些处理, 比如:对ip做一些格式化的操作,tomcat做了磁盘地址映射之后对直接的文件url请求做响应时的Header处理以解决跨域问题等 ...
  • 有的时候服务器端接口允许请求的方式多样化且不过定,没有nginx的内网服务还需要统计分析post请求日志 1) 在项目中加入相应的包和类,加载那里无所谓,只要web.xml配置正确即可 package filters;  import ...
  • 之前在一个springboot项目中开启了access.log日志(参见spring boot打开tomcat的access日志),现在可以很方便的根据access日志统计时延。先看日志文件:  再看access.log里的8个字段: %h %l %u %t "%r" %s %b %D ...
  • 监控宝对tomcat监控

    千次阅读 2014-03-16 08:36:54
    Tomcat请求数,包括每秒请求数,每秒出错数;Tomcat网络流量统计,包括进流量统计,出流量统计; Tomcat线程,包括最大线程数,当前线程数,当前繁忙线程数;Tomcat处理时间,包括最大处理时间,平均处
  • tomcat日志格式 在配置文件 server.xml 中,具体参照官方文档https://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#Access_Log_Valve pattern A formatting layout identifying the various ...
  • 1.对每条ab请求,可以采用下列步骤得到基准调校的结果: 1.配置并重启被测试的Apache httpd和/或Tomcat实例。 2.确信服务器日志没有启动错误。如果有,请按照前面描述...7.注意在ab统计信息中每秒的请求数。 8.如果.
  • 创建线程 tomcat 是通过socket服务及多线程来构建容器的,并通过java的nio来获取请求数据并写回返回数据 1、启动 启动是在网上阅读其它前辈的笔记的,目前学习源码感觉找源头比较痛苦,TOMCAT还好,有一个统计一的...
  • 如下图,这种情况下,Wrapper容器只会通过反射实例化一个Servlet对象,对应此Servlet的所有客户端请求都会共用此Servlet对象,而对于多个客户端请求tomcat会使用多线程处理,所以应该保证此Servlet对象的线程安全,...
  • 列出已部署的WebApp部署、卸载、启动、停止指定的WebApp展现线程池的详情,例如活动线程数、最大线程数、最小线程数等展现请求处理的统计信息,例如平均请求处理时间、请求次数、出错次数等... 从这些功能看,...
  • HTTP请求

    2019-06-29 18:03:00
    一、tomcat端口号设置为80,访问时候可以不加;http协议1.1版本可以复用连接,请求结束后会稍微等会; 二、 表单,get方式提交: 三、user-agent告诉服务器是哪个浏览器,代码中解决兼容性问题,不同的...
  • HttpSessionBindingListener接口在很多情况下用于在线用户人数的统计与管理。不言而喻,session是必须的,但又不想专门...调用tomcat的某个jar,这个包就是在tomcat运行时接收远程客户端的http请求时,用来构造Http...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 167
精华内容 66
关键字:

tomcat请求统计