说真的,这就是《我想进大厂》系列第八篇,然而Linux的问题的确很少,就这样,强行编几个没有养分的问题也没啥意义。
1.CPU负载和CPU利用率的区别是什么?
首先,咱们能够通过uptime
,w
或者top
命令看到CPU的均匀负载。
Load Average :负载的3个数字,比方上图的4.86,5.28,5.00,别离代表零碎在过来的1分钟,5分钟,15分钟内的零碎均匀负载。他代表的是以后零碎正在运行的和处于期待运行的过程数之和。也指的是处于可运行状态和不可中断状态的均匀过程数。
如果单核CPU的话,负载达到1就代表CPU曾经达到满负荷的状态了,超过1,前面的进行就须要排队期待解决了。
如果是是多核多CPU的话,假如当初服务器是2个CPU,每个CPU2个核,那么总负载不超过4都没什么问题。
怎么查看CPU有多少核呢?
通过命令cat /proc/cpuinfo | grep "model name"
查看CPU的状况。
通过cat /proc/cpuinfo | grep "cpu cores"
查看CPU的核数
CPU 利用率:和负载不同,CPU利用率指的是以后正在运行的过程实时占用CPU的百分比,他是对一段时间内CPU应用情况的统计。
我举个栗子????:
假如你们公司厕所有1个坑位,有一个人占了坑位,这时候负载就是1,如果还有一个人在排队,那么负载就是2。
如果在1个小时内,A上厕所花了10分钟,B上厕所花了20分钟,剩下30分钟厕所都没人应用,那么这一个小时内利用率就是50%。
2.那如果CPU负载很高,利用率却很低该怎么办?
CPU负载很高,利用率却很低,阐明处于期待状态的工作很多,负载越高,代表可能很多僵死的过程。通常这种状况是IO密集型的工作,大量申请在申请雷同的IO,导致工作队列沉积。
同样,能够先通过top
命令察看(截图只是示意,不代表真实情况),假如发现当初的确是高负载低使用率。
而后,再通过命令ps -axjf
查看是否存在状态为D+
状态的过程,这个状态指的就是不可中断的睡眠状态的过程。处于这个状态的过程无奈终止,也无奈自行退出,只能通过复原其依赖的资源或者重启零碎来解决。(对不起,我截不到D+的状态)
3.那如果负载很低,利用率却很高呢?
如果你的公司只有一个厕所,里面没人排队,却有一个人在外面上了大半个小时,这阐明什么?
两种可能:他没带纸,或者一些奇怪的事件产生了?
这示意CPU的工作并不多,然而工作执行的工夫很长,大概率就是你写的代码自身有问题,通常是计算密集型工作,生成了大量耗时短的计算工作。
怎么排查?间接top
命令找到使用率最高的工作,定位到去看看就行了。如果代码没有问题,那么过段时间CPU使用率就会降落的。
4.那如果CPU使用率达到100%呢?怎么排查?
- 通过
top
找到占用率高的过程。
- 通过
top -Hp pid
找到占用CPU高的线程ID。这里找到958的线程ID
- 再把线程ID转化为16进制,
printf "0x%x\n" 958
,失去线程ID0x3be
- 通过命令
jstack 163 | grep '0x3be' -C5 --color
或者jstack 163|vim +/0x3be -
找到有问题的代码
5.说说常见的Linux命令吧?
罕用的文件、目录命令
ls
:用户查看目录下的文件,ls -a
能够用来查看暗藏文件,ls -l
能够用于查看文件的详细信息,包含权限、大小、所有者等信息。
touch
:用于创立文件。如果文件不存在,则创立一个新的文件,如果文件已存在,则会批改文件的工夫戳。
cat
:cat是英文concatenate
的缩写,用于查看文件内容。应用cat
查看文件的话,不论文件的内容有多少,都会一次性显示,所以他不适宜查看太大的文件。
more
:more和cat有点区别,more用于分屏显示文件内容。能够用空格键
向下翻页,b
键向上翻页
less
:和more相似,less用于分行显示
tail
:可能是平时用的最多的命令了,查看日志文件根本靠他了。个别用户tail -fn 100 xx.log
查看最初的100行内容
罕用的权限命令
chmod
:批改权限命令。个别用+
号增加权限,-
号删除权限,x
代表执行权限,r
代表读取权限,w
代表写入权限,常见写法比方chmod +x 文件名
增加执行权限。
还有另外一种写法,应用数字来受权,因为r
=4,w
=2,x
=1,平时执行命令chmod 777 文件名
这就是最高权限了。
第一个数字7=4+2+1代表着所有者的权限,第二个数字7代表所属组的权限,第三个数字代表其他人的权限。
常见的权限数字还有644,所有者有读写权限,其他人只有只读权限,755代表其他人有只读和执行权限。
chown
:用于批改文件和目录的所有者和所属组。个别用法chown user 文件
用于批改文件所有者,chown user:user 文件
批改文件所有者和组,冒号后面是所有者,前面是组。
罕用的压缩命令
zip
:压缩zip文件命令,比方zip test.zip 文件
能够把文件压缩成zip文件,如果压缩目录的话则需增加-r
选项。
unzip
:与zip对应,解压zip文件命令。unzip xxx.zip
间接解压,还能够通过-d
选项指定解压目录。
gzip
:用于压缩.gz后缀文件,gzip命令不能打包目录。须要留神的是间接应用gzip 文件名
源文件会隐没,如果要保留源文件,能够应用gzip -c 文件名 > xx.gz
,解压缩间接应用gzip -d xx.gz
tar
:tar罕用几个选项,-x
解打包,-c
打包,-f
指定压缩包文件名,-v
显示打包文件过程,个别罕用tar -cvf xx.tar 文件
来打包,解压则应用tar -xvf xx.tar
。
Linux的打包和压缩是离开的操作,如果要打包并且压缩的话,依照后面的做法必须先用tar打包,而后再用gzip压缩。当然,还有更好的做法就是-z
命令,打包并且压缩。
应用命令tar -zcvf xx.tar.gz 文件
来打包压缩,应用命令tar -zxvf xx.tar.gz
来解压缩