[admin@b64ba8a2-653a-4308-8da5-a355841d7f12 ~]$ top -d 20top - 17:47:54 up 219 days, 14:38, 0 users, load average: 7.41, 4.89, 4.54Tasks: 21 total, 1 running, 20 sleeping, 0 stopped, 0 zombie%Cpu(s): 1.6 us, 2.2 sy, 0.0 ni, 96.0 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 stKiB Mem : 26386179+total, 11119760+free, 63156648 used, 89507552 buff/cacheKiB Swap: 16777212 total, 15732328 free, 1044884 used. 17263196+avail MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND106165 admin 20 0 87572 32280 2416 S 46.7 0.0 91:08.78 nginx106158 admin 20 0 55720 1548 344 S 0.0 0.0 0:00.00 nginx106159 admin 20 0 86948 32680 2416 S 0.0 0.0 108:34.85 nginx106160 admin 20 0 90740 32668 2416 S 0.0 0.0 88:54.68 nginx106161 admin 20 0 1810920 1.671g 2420 S 0.0 0.7 98:25.20 nginx106162 admin 20 0 86548 32280 2416 S 0.0 0.0 102:32.22 nginx106163 admin 20 0 1696468 1.560g 2420 S 0.0 0.6 100:02.93 nginx106164 admin 20 0 86932 32696 2416 S 0.0 0.0 97:14.18 nginx106166 admin 20 0 1463116 1.339g 2412 S 0.0 0.5 131:19.57 nginx
[admin@3a5356b9-0237-4cb7-96e1-67faa400d750 ~]$ stap-prepNeed to install the following packages:kernel-3.10.0-693.5.2.el7.x86_64kernel-devel-3.10.0-693.5.2.el7.x86_64kernel-debuginfo-3.10.0-693.5.2.el7.x86_64
--
--
邮件来自列表“openresty”,专用于技术讨论!
订阅: 请发空白邮件到 openresty...@googlegroups.com
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+...@googlegroups.com
归档: http://groups.google.com/group/openresty
官网: http://openresty.org/
仓库: https://github.com/agentzh/ngx_openresty
教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html
容器里面不太可取,因为这个东西和内核强相关
容器里面不太可取,因为这个东西和内核强相关镜像对内核要求宽即使镜像打包成功也不能通用...温铭说的物理机安装,然后获取容器nginx进程id来抓,可能还更通用实际.
性能分析、Tips
我们经常会在线上或本地开发机器上执行 top、pidstat 等命令,这些命令会报告一些系统和进程的资源使用情况,这就是资源分析。资源分析主要聚焦于资源利用率、饱和度以及错误数,这就是经典的 USE 分析方法。这个分析方法由 Brendan Gregg 大神提出,非常有用。通过资源分析可以非常直观的看到业务应用在线上跑着,会吃掉多少的内存,占用多少的 CPU,产生多少磁盘吞吐等。
第二个是针对应用程序本身所展开的工作负载分析,工具也比较多,包括 perf,systemtap,bcc/ebpf 等工具。通过 systemtap、bcc/ebpf 可以将数据进行汇总,利用工具画出火焰图。负载分析主要是针对应用程序自身的表现,比如 OpenResty,在作为一个反向代理服务器或者网关存在时,大家比较关心它的指标就是请求延时和状态码,像 501、502、504 状态码的比例。
当我们需要展开分析时,会发现线上环境,工具等条件不足,甚至连基本的编译工具都没有,这时候像 systemtap 这样的工具就没法用了。又拍云也遇到了这样的问题,因此我们采用了容器化,把所有的工具全部扔到了容器里,包括一些基本的编译器,链接器,常用的 perf、systemtap、gdb、mozilla rr 等工具。大家可能会觉得容器的权限会不会有问题,当然首先这个容器必须是以特权模式去运行,另外还需要把宿主机的内核头文件进行映射,并且必须使用宿主机的 pid namespace,否则在容器里面没有办法去追踪宿主机上的进程。
容器里面不太可取,因为这个东西和内核强相关镜像对内核要求宽即使镜像打包成功也不能通用...温铭说的物理机安装,然后获取容器nginx进程id来抓,可能还更通用实际.