开始写之前先列一个提纲,提纲列好了,后面读起来就方便了。本文先讲拿到一台服务器之后怎么去了解这台机器,之后看看服务器的配置,最后结合案例分析进程占用资源过高的问题。
一、Linux系统资源分析
服务器资源具体指的是cpu,内存,网络,io,而工程师们时刻在考虑怎么更大化的压榨这些资源,要想充分压榨服务器,首先我们要对服务器有充分的认识,所谓知己知彼,百战不殆。
拿到一台服务器,首先我会看看服务器版本 lsb_release -a,如下所示:
从返回结果可以看出服务器是centos,版本7.4.1708,之后我会看看看看本机的IP
查到服务器的版本消息之后我就会去了解cpu是几核,内存多大,网络带宽的情况,这和买了一台笔记本一样,买的过程中我们都会去看看硬件配置。
这一块可以参考我另一篇文章Linux—查看cpu、磁盘、内存、网络的命令_张狂年少的博客-CSDN博客
使用netstat -ntlp看看服务器上启动了那些服务和占用了那些端口,这样一来对服务器启动了哪些服务有个了解
如果是查看java服务还可以用jps命令
可以看到我启动了两个jar包
二、Linux服务器中进程占用服务器资源分析
查看服务器占用资源一般使用top命令
由命令查询结果可以看出cpu的几核,内存使用情况还有服务器负载情况,列表还有所有进程的资源动态使用情况,可以根据cpu和内存排序,这个就和windows的任务管理器一样,有了这些我们就可以很直观的看到进程的资源使用情况了。
三、案例
1. jenkins 自动构建时间太长
* 查询服务器资源使用情况
查看进程内存占用情况
- 1. top
直接使用top命令,查看%MEM的内容。
可以选择按进程查看或者按用户查看。如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:
$ top -u oracle
- 2. pmap
用pmap命令查看进程相关信息,其中有占用的内存情况,如下所示(进程号pid可以通过ps命令查看):
$ pmap -d pid
- 3. ps
命令如下:
$ ps -e -o 'pid,cmd,%cpu,%mem,rsz,vsz,stime,user,uid'
上例查找jenkins进程的内存使用情况,并由大到小的顺序排列:
$ ps -e -o 'pid,cmd,%cpu,%mem,rsz,vsz,stime,user,uid' | grep jenkins | sort -nrk5