us:用户进程消耗CPU时间百分比,us值高,用户进程消耗CPU时间多,如果长期大于50%,优化程序
sy:内核进程(系统)消耗CPU时间百分比
us+sy参考值为80%,如果us+sy的值大于80%,说明可能存在CPU的不足
1. 先用top命令找出CPU占比最高的
2. ps -df或者jps进一步定位,得知哪个后台程序在惹事
3. 定位到具体线程或者代码ps -mp 进程 -o Thread
4. 将需要的线程ID转换为16进制格式
5. jastack进程id gred tid
线上出现了问题,登上线上的机器查日志是非常常见的操作了。我第一次登上线上机器查日志的时候,我还只记得以下的几个命令(假设现在我们的日志文件叫做service.log):
1. cat service.log
如果是小文件的话,单纯的cat命令还是可以应付的,但如果你直接用cat命令打开一个1GB的日志文件,保证卡死你.
2. tail -f service.log
3. vim serivice.log
同样地,如果是小文件,单纯的vim命令去打开文件也是可以应付的,但如果你用vim命令去打开一个1GB甚至更大的文件,也能明显感受到缓慢和卡顿。
面对比较大的日志文件,这我们就得配合grep来玩了,比如我们现在得知某个手机号收不到短信验证码,想要看一下这个手机号的日志是怎么样的。于是我们就可以这样搞:
这么一搞,就能将service.log中所有含有13888888888的记录给搜出来,搜索的速度还是贼快的。
现在我们已经能根据关键字搜到对应的记录了,接着我想看一下那条记录的日志上下文。
首先,我们先要查出对应记录的行号,在cat 命令后面加上一个 -n 参数就好了。所以命令是:cat -n service.log | grep 13888888888 ,如下图我们就可以查到对应的行号了。
ps -ef:列出所有的进程
我们可以通过 |管道和grep 来过滤掉想要查的进程,比如说:ps -ef |grep java
ls: 用户查看目录下的文件,ls -a可以用来查看隐藏文件,ls -l可以用于查看文件的详细信息,包括权限、大小、所有者等信息。
touch: 用于创建文件。如果文件不存在,则创建一个新的文件,如果文件已存在,则会修改文件的时间戳。
cat: 用于查看文件内容。使用cat查看文件的话,不管文件的内容有多少,都会一次性显示,所以他不适合查看太大的文件。
tail: 可能是平时用的最多的命令了,查看日志文件基本靠他了。一般用户tail -fn 100 xx.log查看最后的100行内容