讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux怎么编写脚本快速找出访问日志中耗时最长的前10个慢接口

阿明大大_1376

阿明大大_1376

发布时间:2026-10-05 09:33:29

|

511人浏览过

|

来源于php中文网

原创

用awk提取日志耗时字段并数值降序取top10最稳:先确认字段位置,用awk切出数字(避免空格不规律或特殊字符干扰),加sort -k1,1nr和head -10,注意LC_ALL=C、内存限制及gzip支持。

linux怎么编写脚本快速找出访问日志中耗时最长的前10个慢接口

用 awk 提取耗时字段再排序

访问日志里耗时通常在每行末尾或固定列(比如 Nginx 的 $request_time,Apache 的 %D),直接用 awk 切出数字最稳。别信“用 cut -d' ' -fN”,空格不规律时会错位。

常见错误:把日志里 IP 或 URL 里的点、斜杠当分隔符,结果切到一半的耗时值(比如 "0.876" 变成 "0.87")。

  • 先确认耗时字段位置:用 head -1 access.log | awk '{print NF; print $0}' 看总字段数和样例
  • 如果耗时在倒数第 2 列(如 Nginx 默认格式),用 awk '{print $(NF-1), $0}' access.log 把耗时提到最前,方便排序
  • 加 -F' 指定分隔符(比如 Nginx 用空格,但有些日志用双引号包字段,这时得先用 sed 清洗)

按数值降序取 top 10,不是字典序

sort -k1 默认是字符串排序,"10.2" 会排在 "2.5" 前面——这明显不对。必须加 -n(数值)和 -r(降序)。

性能影响:大日志(GB 级)直接 sort 会吃光内存,sort -S 512M 可限制内存用量;更稳妥是先用 awk 过滤掉明显快的请求(比如 $NF ),再排。

  • 完整管道: awk '{print $(NF-1), $0}' access.log | sort -k1,1nr | head -10
  • 如果耗时字段含单位(如 "1.234s"),先用 gsub(/[^0-9.]/,"") 清洗
  • 注意时区或日志轮转导致的字段偏移——同一份日志里可能混着不同格式,建议先 grep -v "^\-" access.log 排除注释行

处理 Nginx 的 $upstream_response_time 字段

如果后端有代理(如反向代理到 Flask/Java),真正慢的是 $upstream_response_time,不是 $request_time。这个字段可能是 "-"(超时) 或 "0.001, 0.002"(多段 upstream),直接当数字排会失败。

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载

容易踩的坑:用 awk '$NF != "-" {print $NF}' 忽略 "-" 是对的,但遇到逗号分隔的多值就得拆开。实际慢接口往往对应最大那段 upstream 耗时。

  • 提取并取最大值: awk -F', ' '{max=0; for(i=1;i max) max=$i+0; if(max>0) print max, $0}' access.log
  • 避免科学计数法干扰:某些日志里超长耗时写成 1.23e-02,awk 能直接算,但 sort -n 也认
  • 加 2>/dev/null 屏蔽 awk 对非数字字段的警告(比如空字段)

封装成可复用的 shell 函数

每次改路径、字段号太麻烦,写成函数后,slowlog access.log 12 就能指定第 12 列为耗时字段。

别硬编码 $(NF-1)——不同日志格式列数差异大,传参更灵活;也别用 source 加载一堆函数,单脚本搞定最省心。

  • 示例函数:
    slowlog() {
      local log="$1" col="${2:-$(awk '{print NF; exit}' "$log" | xargs echo -n | wc -w)}"
      awk -v c="$col" '$c ~ /^[0-9.]+([eE][+-]?[0-9]+)?$/ {print $c, $0}' "$log" 2>/dev/null | \
        sort -k1,1nr | head -10 | cut -d' ' -f2-
    }
  • 调用时加 LC_ALL=C 避免 locale 导致 sort 排序异常(比如某些中文环境把点号当分隔符)
  • 真实生产环境日志量大,别漏了 zcat 支持:zcat access.log.*.gz | slowlog /dev/stdin 12

字段位置和清洗逻辑比排序命令本身更容易出错,尤其混用多种日志格式时,先用小样本验证输出是否含完整原始行,再跑全量。

热门AI工具

更多
火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

3088

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

4509

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3709

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

406

2026.01.19

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

3830

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

3293

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2413

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

5810

2023.07.05

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

80

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Miniconda官方安装文档
Miniconda官方安装文档

共0课时 | 0人学习

phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

安装 Xdebug 并配置 phpstorm
安装 Xdebug 并配置 phpstorm

共1课时 | 182人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn