生产环境突发高负载!是“谁”偷走了你的服务器性能?
场景描写 网站上线后一向不变运行,工作产生在本日早上,刚到公司,还没走到工位,手机收到告警信息,出产情形中的某台处事器突发高负载!立马开启电脑,放动手中早餐,开始排查处理赏罚。下面是诊断引起体系CPU机能题目的进程,但愿能给到各人一些诊断题目时的一些思绪。 营业情形:PHP 排查进程 1、行使top呼吁查察当前体系环境,并按[1]睁开CPU列表 2、上图可以看出来CPU占用首要是php历程导致,当前可用内存足够。此刻重点看下CPU的环境。 此例子中CPU 首要耗损在内核态「sy」,而非用户态「us」。 必要跟踪措施举动一样平常会用到两个器材:
下面行使strace来说明这次的题目:
从上图可以看到CPU总耗时最长的操纵是一个名为clone的挪用函数,单独追踪下这个呼吁:
可以看到,一个 clone 操纵必要几百毫秒,clone操纵的浸染简朴来说就是挪用体系函数去建设(fork)一个新历程。此刻回归到PHP侧说明为什么会呈现此类体系挪用。 查询营业代码看到了 exec 函数,这个呼吁导致了体系不绝会fork历程,行止理赏罚exec执行的外部呼吁,导致CPU开销很大。 通过如下呼吁验证它确实会导致 clone 体系挪用:
有同窗要疑问了,同是Linux运维工程师,本身从来都是登岸处事器调查资源行使环境才获取到高负载告警,之前尚有因未实时发明处事器高负载环境,使得营业短时刻瓦解,丧失惨重。 你是如安在还没到工位时就收随处事器高负载的告警信息的呢? 我是行使了一个云运维器材——王传授,对付一般运维事变辅佐确实很是大,可以实时提示我云资源的变革环境,譬喻:处事器 CPU 行使率偏高、处事器安详组配置不安详、云数据库存在慢SQL等。行使云,运维云的同窗可以选择行使。 王传授器材地点:https://prof.wang。
(编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |