加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

生产环境突发高负载!是“谁”偷走了你的服务器性能?

发布时间:2019-08-06 13:07:46 所属栏目:建站 来源:老王谈运维
导读:场景描写 网站上线后一向不变运行,工作产生在本日早上,刚到公司,还没走到工位,手机收到告警信息,出产情形中的某台处事器突发高负载!立马开启电脑,放动手中早餐,开始排查处理赏罚。下面是诊断引起体系CPU机能题目的进程,但愿能给到各人一些诊断题目时的

出产情形突发高负载!是“谁”偷走了你的处事器机能?

 场景描写

网站上线后一向不变运行,工作产生在本日早上,刚到公司,还没走到工位,手机收到告警信息,出产情形中的某台处事器突发高负载!立马开启电脑,放动手中早餐,开始排查处理赏罚。下面是诊断引起体系CPU机能题目的进程,但愿能给到各人一些诊断题目时的一些思绪。

出产情形突发高负载!是“谁”偷走了你的处事器机能?

营业情形:PHP

排查进程

1、行使top呼吁查察当前体系环境,并按[1]睁开CPU列表

出产情形突发高负载!是“谁”偷走了你的处事器机能?

2、上图可以看出来CPU占用首要是php历程导致,当前可用内存足够。此刻重点看下CPU的环境。

此例子中CPU 首要耗损在内核态「sy」,而非用户态「us」。 必要跟踪措施举动一样平常会用到两个器材:

  • 内核态的函数挪用跟踪用「strace」
  • 用户态的函数挪用跟踪用「ltrace」

下面行使strace来说明这次的题目:

  1. [root@localhost ~]# strace -cp <PID> 
出产情形突发高负载!是“谁”偷走了你的处事器机能?

从上图可以看到CPU总耗时最长的操纵是一个名为clone的挪用函数,单独追踪下这个呼吁:

  1. [root@localhost ~]# strace -T -e clone -p <PID> 
  2. # -T: 获取操纵现实耗损的时刻 
  3. # -e: 指定必要追踪的操纵 
出产情形突发高负载!是“谁”偷走了你的处事器机能?

可以看到,一个 clone 操纵必要几百毫秒,clone操纵的浸染简朴来说就是挪用体系函数去建设(fork)一个新历程。此刻回归到PHP侧说明为什么会呈现此类体系挪用。

查询营业代码看到了 exec 函数,这个呼吁导致了体系不绝会fork历程,行止理赏罚exec执行的外部呼吁,导致CPU开销很大。

通过如下呼吁验证它确实会导致 clone 体系挪用:

  1. [root@localhost ~]# strace -e clone php -r 'exec("ls");' 

有同窗要疑问了,同是Linux运维工程师,本身从来都是登岸处事器调查资源行使环境才获取到高负载告警,之前尚有因未实时发明处事器高负载环境,使得营业短时刻瓦解,丧失惨重。

你是如安在还没到工位时就收随处事器高负载的告警信息的呢?

我是行使了一个云运维器材——王传授,对付一般运维事变辅佐确实很是大,可以实时提示我云资源的变革环境,譬喻:处事器 CPU 行使率偏高、处事器安详组配置不安详、云数据库存在慢SQL等。行使云,运维云的同窗可以选择行使。

王传授器材地点:https://prof.wang。

出产情形突发高负载!是“谁”偷走了你的处事器机能?
出产情形突发高负载!是“谁”偷走了你的处事器机能?

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读