美文网首页
如何分析线上环境运行中的问题进程

如何分析线上环境运行中的问题进程

作者: 郑渊 | 来源:发表于2018-07-12 09:32 被阅读138次

背景

在项目中,经常会遇到业务进程不按照自己的预期去执行,比如有时候进程内部突然卡死,但进程本身扔处于存活状态;进程所消耗的cpu和内存很高,但是此时从访问日志和请求量来看并不是很繁忙。当这些问题在线上发生的时候,有些同学就喜欢慌里慌张去重启进程,重启好了,业务恢复后也不去深究原因,导致无法从根本上解决问题。当我们碰到此情况时,一般是先把有问题的机器从线上的流量里隔离出来,然后对该进程进行分析,下面我主要针对以上场景聊聊我们怎么去分析和定位问题。

一个php进程僵死的案例

现象描述:一个后台运行的worker进程,某一天突然发现程序没有按照预期的方向执行,而是假死在那里

分析步骤:

Step 1 运行 strace -p 进程号,跟踪进程的执行状态:

poll([{fd=6, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)

poll([{fd=6, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)

poll([{fd=6, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout) 

发现进程是阻塞在poll调用上,然后进一步分析,该poll调用对应的业务是啥?

Step 分析对应的文件描述符

lsof -d 6 | grep 30817

php 30817 root 6u IPv4 1020151173 0t0 TCP 10.229.137.42:43402->141.215.141.70:http (ESTABLISHED)

发现是一个http调用卡在那里,然后我们再分析下程序里面调用141.215.141.70这个ip地址的地方,即可定位的有问题代码的位置

一个Go进程的僵死案例

相关文章

  • 如何分析线上环境运行中的问题进程

    背景 在项目中,经常会遇到业务进程不按照自己的预期去执行,比如有时候进程内部突然卡死,但进程本身扔处于存活状态;进...

  • 11.《Bioinformatics Data Skills》之

    生物信息学某些分析会占据大量的时间,这里了解如何使进程在后台运行,终止进程与查看进程状态的基本操作。 后台运行进程...

  • 查看进程环境

    问题: 进程在运行的过程中,比如Tomcat,发现该进程产生的日志文件权限不对,如何排查。我们会期望可以查看该进程...

  • 分析运行中的 Python 进程

    在 Java 中打印当前线程的方法栈,可以用 kill -3 命令向 JVM 发送一个 OS 信号,JVM 捕捉以...

  • 6.进程

    VI. 进程 以一个或多个无状态进程运行应用 运行环境中,应用程序通常是以一个和多个 进程 运行的。 最简单的场景...

  • 《Operating System TEP》笔记(二)

    4:抽象概念:进程(Process) 进程简单概念:运行的程序。 ** 核心问题:如何制造无穷多CPU的假象?**...

  • Android6.0之App的Service组件运行机制之Sta

    现在来分析service是如何启动的。 service运行的进程 一般在AndroidManifest.xml配置...

  • Hive 子进程死循环问题排查

    线上有个任务失败了,查看工作机器上运行的进程情况,有个进程比较陌生,如下图 这个问题的详细描述:https://m...

  • 优先队列

    在多用户环境中,操作系统调度程序必须决定在若干进程中运行哪个进程。一般只允许一个进程运行一个固定的时间片。一种算法...

  • 线上运行的Java应用出故障了!我慌得一匹!

    线上运行的Java应用突然没有响应、响应缓慢,进程突然消失,遇到这些情况应该如何应对呢? 今天教大家如何应对在线故障!

网友评论

      本文标题:如何分析线上环境运行中的问题进程

      本文链接:https://www.haomeiwen.com/subject/mshwuftx.html