tomcat和nginx的日志记录请求时间

这篇具有很好参考价值的文章主要介绍了tomcat和nginx的日志记录请求时间。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        当系统卡顿时候,我们需要分析时间花费在哪个缓解。项目的后端接口可以记录一些时间,此外,在我们的tomcat容器和nginx网关上也可以记录一些有关请求用户,请求时间,响应时间的数据,可以提供更多的信息以便于排查问题。

1.tomcat日志

server.xml

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

以下列出了一些基本的日志格式项:

%a – 远程主机的IP (Remote IP address)
%A – 本机IP (Local IP address)
%b – 发送字节数,不包含HTTP头,0字节则显示 ‘-’ (Bytes sent, excluding HTTP headers, or ‘-’ if no bytes
were sent)
%B – 发送字节数,不包含HTTP头 (Bytes sent, excluding HTTP headers)
%h – 远程主机名 (Remote host name)
%H – 请求的具体协议,HTTP/1.0 或 HTTP/1.1 (Request protocol)
%l – 远程用户名,始终为 ‘-’ (Remote logical username from identd (always returns ‘-’))
%m – 请求方式,GET, POST, PUT (Request method)
%p – 本机端口 (Local port)
%q – 查询串 (Query string (prepended with a ‘?’ if it exists, otherwise
an empty string)
%r – HTTP请求中的第一行 (First line of the request)
%s – HTTP状态码 (HTTP status code of the response)
%S – 用户会话ID (User session ID)
%t – 访问日期和时间 (Date and time, in Common Log Format format)
%u – 已经验证的远程用户 (Remote user that was authenticated
%U – 请求的URL路径 (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)
你可以用以上的任意组合来定制你的访问日志格式,也可以用下面两个别名common和combined来指定常用的日志格式:
common – %h %l %u %t "%r" %s %b
combined -
%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"
另外你还可以将cookie, 客户端请求中带的HTTP头(incoming header), 会话(session)或是ServletRequest中的数据都写到Tomcat的访问日志中,你可以用下面的语法来引用。
%{xxx}i – 记录客户端请求中带的HTTP头xxx(incoming headers)
%{xxx}c – 记录特定的cookie xxx
%{xxx}r – 记录ServletRequest中的xxx属性(attribute)
%{xxx}s – 记录HttpSession中的xxx属性(attribute)
2.nginx日志
 log_format access_json '{"@timestamp":"$time_iso8601",'
        '"host":"$server_addr",'
        '"clientip":"$remote_addr",'
        '"size":$body_bytes_sent,'
        '"responsetime":$request_time,'
        '"upstreamtime":"$upstream_response_time",'
        '"upstreamhost":"$upstream_addr",'
        '"login_user":"$cookie_login_user",'
        '"http_host":"$host",'
        '"request":"$request",'
        '"domain":"$host",'
        '"xff":"$http_x_forwarded_for",'
        '"referer":"$http_referer",'
        '"status":"$status"}';
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。

指的就是从接受用户请求的第一个字节到发送完响应数据的时间,即$request_time包括接收客户端请求数据的时间、后端程序响应的时间、发送响应数据给客户端的时间(不包含写日志的时间)。

upstream_response_time(单位为秒)

官网描述:keeps time spent on receiving the response from the upstream server; the time is kept in seconds with millisecond resolution. Times of several responses are separated by commas and colons like addresses in the $upstream_addr variable.。

是指从Nginx向后端建立连接开始到接受完数据然后关闭连接为止的时间。

从上面的描述可以看出,$request_time肯定比$upstream_response_time值大;尤其是在客户端采用POST方式提交较大的数据,响应体比较大的时候。在客户端网络条件差的时候,$request_time还会被放大。


参考文档:

Tomcat访问日志浅析_org.apache.catalina.valves.accesslogvalve_yaerfeng的博客-CSDN博客

Nginx - request_time和upstream_response_time详解_nginx request_time_zzhongcy的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-624054.html

到了这里,关于tomcat和nginx的日志记录请求时间的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web入门---tomcat&请求响应

    Web 服务器是一个软件程序,对 HTTP协议的操作进行封装,使得不必直接对协议进行操作,让 web 开发更加便捷。主要功能是“提供网上信息浏览服务”。 下载 tomcat 这里有一个示例 直接双击打开 index.html 但是这个“打开”是再本地浏览器打开的,不是通过服务器打开的 接下来

    2024年02月07日
    浏览(47)
  • SpringCloud Gateway 打印请求响应日志

    version spring-cloud 2021.0.1 spring-boot 2.6.3 spring-cloud-alibaba 2021.0.1.0 网关不是基于springmvc的,而是基于webflux去做的 SpringCloudGateway中Post请求参数只能读取一次 这是因为Gateway默认使用的是SpringWebflux,解决这个问题需要容重新构造一个request来替换原先的request CacheBodyGlobalFilter这个全局过

    2024年02月02日
    浏览(49)
  • Jmeter书中不会教你的(93)——获取请求响应时间、请求开始时间、请求结束时间

    在做一个请求时,想要实时查看这个请求的连接时间,请求开始和结束时间,响应时间,从而在性能测试中判断哪段耗时是最长的。 比如访问百度 想在日志中输出划线部分的时间,一定要去看jmeter的api文档, Overview (Apache JMeter dist API)其中我目前用的最多的就是org.apache.jmet

    2023年04月08日
    浏览(104)
  • Tomcat中间件打印请求日志

    修改conf下的 server.xml 文件中的 Valve 配置 主要修改pattern的值 相关pattern的含义可以参考官方文档,这里贴上方便查询 最后打印格式如下 在SpringBoot使用嵌入式Tomcat可以在配置文件中按照如下配置 directory可以配置相对路径或绝对路径,如果是相对路径,那么最终会放在Tomcat的基

    2024年02月07日
    浏览(53)
  • 请求响应-日期时间参数的接受

    由于从前端发送的请求中,日期的格式可能各不相同,使用 @DateTimeFormat 注解完成日期参数格式的转换 具体关键代码如下:   在postman中发出对应请求携带对应参数结果如下: 参数名称要与方法中的形参名称一致,免得还要设置    

    2024年02月13日
    浏览(50)
  • 如何获取HTTP请求时间与响应时间【附源码】

    今日遇到了一个问题,要去获取HTTP报文在 请求 和 响应 的时间,因为没有原生的API可以调用,所以需要一定的技巧~ 下面主体的框架和代码,我使用了form表单去构造一个POST请求,然后在Servlet中重写doPost()方法,然后实现获取请求时间和响应时间的代码逻辑 我们可以先去观察

    2024年02月08日
    浏览(68)
  • 了解HTTP代理日志:解读请求流量和响应信息

      嗨,爬虫程序员们!你们是否在了解爬虫发送的请求流量和接收的响应信息上有过困扰?今天,我们一起来了解一下。 首先,我们需要理解HTTP代理日志的基本结构和内容。HTTP代理日志是对爬虫发送的请求和接收的响应进行记录的文件。在日志中,我们可以看到每一次请求

    2024年02月14日
    浏览(40)
  • 接口响应时间长,前端返回请求超时解决

    1. 全局设置 axios.defaults.timeout = 时间 // 单位为毫秒 或 2. 封装的http请求 或 3. nginx默认的响应时间是60S 还需要修改nginx.conf文件 在配置的请求代理下添加 单位为秒

    2024年02月12日
    浏览(59)
  • nginx设置服务器响应时间长短

    设置完重启nginx即可 (1)proxy_connect_timeout :后端服务器连接的超时时间_发起握手等候响应超时时间 (2)proxy_read_timeout:连接成功后等候后端服务器响应时间其实已经进入后端的排队之中等候处理 (3)proxy_send_timeout :后端服务器数据回传时间_就是在规定时间之内后端服务器必

    2024年02月11日
    浏览(51)
  • vue请求时间太长_接口处理请求时间过长,前台响应“服务器超时”的解决办法

    这些方法可以根据具体需求和情况进行选择和组合使用,以提高前端的用户体验和接口的性能。同时,还需要考虑服务器端的性能和网络环境,以及前后端的协作来实现最佳的用户体验。

    2024年02月09日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包