前言
当收到线上服务器 CPU 负载过高告警时,要怎么做?重启服务?忽略告警?别人不知道怎么做,但是作为一个程序猿,是一定要定位到具体问题所在并FIX它。
下面记录一下服务器 CPU 负载过高排查过程,把排查流程理清楚,以后遇到问题将会迅速定位到问题所在,快速解决。
什么样的场景会导致线上CPU负载过高?
代码层面常见的场景有:
程序陷入死循环,不停地消耗CPU
线程死锁,线程相互等待,导致假死状态,不停地消耗CPU
最近翻了一次车
最近在创建目录的时候在当前目录下面创建了一个 ~ 的目录,强迫症发作,当时只是想把它删掉,顺手rm -rf ~
大脑在发出敲击ENTER的指令后的0.0001ms,再次发出了停止指令,还是没控制住那一只程序猿修炼多年的手,结果不出意外的杯具了,当前用户根目录下面的文件全部被删掉了。。。
fdisk - Partition table manipulator for Linux
中文的意思是磁盘分区表操作工具,用于创建和维护磁盘分区。
在linux里最多只能建立四个主分区,所以通常至少建一个扩展分区,编号1-4为主分区的编号,逻辑分区的编号从5开始。如果只有一个主分区1,则[2,3,4]号空缺,逻辑分区编号依然是直接从5号开始。
Java用了这么久,今天突然发现一个很有意思的事:
为什么在Java中1000 == 1000为false,而100 == 100为true?
这是一个挺有意思的讨论话题。
如果你运行下面的代码
1 | Integer a = 1000, b = 1000; |
你会得到:
false
true
基于InfluxDB 1.2版本
1 | CREATE DATABASE <database_name> [WITH [DURATION <duration>] [REPLICATION <n>] [SHARD DURATION <duration>] [NAME <retention-policy-name>]] |
和其他数据库一样,使用CREATE DATABASE去创建一个数据库。
database_name是数据库名称。
创建数据库时可以为该数据库创建数据保留策略,WITH, DURATION, REPLICATION, SHARD DURATION, 和 NAME是用来创建新的策略,如果没有指定创建数据保留策略,则会使用默认策略,InfluxDB默认会为每一个数据库创建一个名为autogen的数据保留策略。