当前位置: 首页 > news >正文

用取样思想一探AIX上进程性能瓶颈

本篇文章也是我在解决客户问题时的一些思路,希望对读者有用。

本文与GDB也与DBX(AIX上的调试工具)无关,只是用到了前文《GDB技巧》中的思想:取样思想

客户问题:

原始问题是磁盘被占满了,通过调查得知有个我们的进程刷数据刷的特变慢,于是就得查这个进程到底慢在哪?

解决方案:

通过每隔一秒取样当时的callstack,然后统计下谁最耗时。

AIX上可以用dbx取得callstack,但有现成的procstack能直接用,免得麻烦了。

写一个简单的shell script:

#!/bin/sh# Usage: ./call_stack.sh <pid>
# Target: Get call stack of process every secondif [ "$#" -ne 1 ]; thenecho "Usage: $0 <process_id>"exit 1
fiprocess_id="$1"while true; doif ! kill -0 "$process_id" 2>/dev/null; thenecho "Process $process_id has exited."breakfidate >>/tmp/callstack.outprocstack "$process_id" >>/tmp/callstack.outsleep 1
done

最后一统计第一层的函数竟然是writev占绝对优势, 是IO方面的问题,所以请求客户与IBM联系去了。

总结

也许AIX上有现成的像Linux上gperf这样的工具? 我不得而知,但我直接用了适用于各种平台的大法:取样,不必去研究AIX上的性能工具了,而且适用于release版本程序。

http://www.lryc.cn/news/252409.html

相关文章:

  • 分布式搜索引擎elasticsearch(二)
  • Tecplot绘制涡结构(Q准则)
  • Whisper
  • Android系统分析
  • 五、关闭三台虚拟机的防火墙和Selinux
  • 【从零开始学习Redis | 第六篇】爆改Setnx实现分布式锁
  • Kubernetes学习笔记-Part.05 基础环境准备
  • 语义分割 DeepLab V1网络学习笔记 (附代码)
  • java设计模式学习之【建造者模式】
  • Spring Boot中的RabbitMQ死信队列魔法:从异常到延迟,一网打尽【RabbitMQ实战 一】
  • nrm : 镜像源工具npm镜像切换
  • Star 10.4k!推荐一款国产跨平台、轻量级的文本编辑器,内置代码对比功能
  • iOS 17.2:可以修改消息提示音了
  • PTA 一维数组7-3出生年(本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话)
  • 【3】基于多设计模式下的同步异步日志系统-设计模式
  • Metasploit的使用和配置
  • 测试用例的设计思路
  • HCIP——交换综合实验
  • 大学生如何搭建自己的网站
  • linux 路由表的优先级
  • 毕业项目分享
  • Android启动系列之进程杀手--lmkd
  • tex中的边框
  • 面试题库之JAVA基础篇(三)
  • CTF-虚拟机-QEMU-前置知识-操作流程与源码阅读
  • java成神秘籍第一卷
  • golang实现文件上传(高并发+分块+断点续传+加密)
  • 用HeidiSQL在MySQL中新建用户
  • 【IPv6】IPv6协议
  • 无需服务器,无需魔法,拥有一个微信机器人就是这么简单