欢迎来到赛兔子家园

Linux服务器性能监控

性能测试的目的

       发现服务器的性能瓶颈。配置的不同能够承载的最大任务数不同,能够承载的压力也不同。

测试范围及性能指标

  • CPU    
  • 内存     临时存储数据相对于磁盘I/O速度快,断电数据就丢失;
  • 磁盘     永久存储数据,只要硬盘不坏
  • 网络
  • 版本     linux系统版本必须相同

性能损耗

通过多次压测来计算性能损耗:

例如:性能测试环境是   :3台 8核cpu 16G内存 性能表现是什么样子,5台,7台性能表现又是什么样子 ;

          性能损耗指标计算(一般测试报告中需要体现出来):相同的脚本,相同的环境什么都是相同的,然后增加服务器然后大概计算一下性能损耗;

进程和线程

定义与区别

  进程:进程是独立运行的程序,进程占系统资源,启动时就会分配内存空间;

  线程:线程是在进程中工作,进程是一个盒子里面有多个线程至少有一个线程。CPU在调度和分派时是针对线程的。线程基本上不用系统资源。

区别:

  • 一个线程只能属于一个进程,而一个进程可以拥有多个线程。
  • 线程是进程工作的最小单位。
  • 一个进程会分配一个地址空间,进程和线程之间不共享地址空间,即不共享内存。
  • 同一个进程下不同的多个线程,共享父进程的地址空间。
  • 线程在执行过程中,需要协助同步(多线程时控制好具体哪个线程在那个时间段来操作),不同进程的线程之间要利用消息通信的办法实现同步。
  • 线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。

优缺点

进程优点:

  • 每个进程相互独立了,不影响主程序的稳定性,子进程崩溃不影响其他进程;
  • 通过增加CPU,就可以扩充性能。
  • 可以尽量减少线程加锁和解锁的影响,极大提高性能。

进程缺点:

  •  逻辑控制复杂,需要和主程序交互。
  • 多进程调度开销大(占内存)。

线程优点:

  • 程序逻辑和控制方式简单。
  • 所有线程可以直接共享内存和变量等。
  • 线程方式消耗的总资源比进程方式少。

线程缺点:

  • 每个线程与主程序共用地址空间,最大内存地址受限。
  • 线程之间的同步和加锁不易控制。
  • 一个线程崩溃可能影响到整个程序的稳定性。

服务器实时监控

top参数(查看cpu,内存,进程)

-h :帮助

-p : 监控指定的进程。当监控多个进程时,进程ID已逗号分隔。这个选项只能在命令行下使用

例如:top -p 1,2       只查看pid等于1,2的进程

top任务命令区

直接输入M:按内存使用率排序

直接输入P:按CPU使用率排序

直接输入z :彩色/黑白显示

top中的load average

系统的运行队列的平均利用率,也可以认为是可运行进程的平均数。三个值分别表示在最后1分钟、5分钟、15分钟的平均负载值。

 

在单核cpu中load average的值为1时表示满负荷状态。同理在多核cpu中满负荷的load average的值为1*cpu核实。例如 8核  load average为8时表示满负荷。

内存监控

vmstat(内存)

可以监控操作系统的进程状态、内存、虚拟内存、磁盘IO、CPU的信息。

语法:vmstat[-a][-n][-S unit][delay [count]]

vmstat参数

-S:使用指定单位显示。参数有k、K、m、M,分别表示1000/1024/1000000/1048576字节(byte)。默认单位为K(1024bytes)

例如:动态监控1秒显示2次

vmstat  1  2

free(内存命令)

能够监控系统的内存使用状态,其中,total:总计物理内存的大小;Used:已使用多大;Free:可用有多少;shared:多个进程共享的内存总额;buffers/cached:磁盘缓存的大小。

free -m   已Mbps显示

实时监控 cpu

mpstat】

需下载安装好:CentOS系统使用 yum install -y sysstat

                        Ubuntu系统使用 opt-get install -y sysstat

mpstat最大的特点是:可以查看多核cpu中每个计算核心的统计数据。

mpstat需关注字段:%usr(用户使用)   %sys(系统)   %idle(空闲越多越好)

mpstat -p  帮助

mpstat    -->查看所有cpu

mpstat -P 0  -->查看第一核的cpu

mpstat -P 3   查看第三核cpu

mpstat 1 2   1秒钟动态获取2条所有cpu

 实时监控【网络】

netstat】 命令用于显示本机网络链接、运行端口、路由表等信息。

参数说明:

-n:拒绝显示别名,能显示数字的全部转化成数字

-l :仅列出有在Listen(监听)的服务状态

-p:显示建立相关链接的程序名

-t :显示tcp相关选项

-u : 显示udp相关选项

-i  : 显示自动匹配接口的信息

-c : 每隔一个固定时间,执行该netstat命令

常用参数组合:netstat  -ntlp     --->查看tcp、监听状态、不显示别名且显示建立链接的程序名;

查看端口是否被监听,是否在运行状态:

常用参数组合:netstat -i     --->显示自动匹配接口的信息 查看网络传输的大小,有没有报错;

各个字段介绍:

动态打印

netstat -i  2   --->2秒打印一次

 实时监控-磁盘

iostat

iostat是对系统磁盘IO操作进行监控,它的输出主要显示磁盘的读写操作的统计信息,同时给出cpu的使用情况;

参数说明:

-x   输出指定要统计的磁盘设备名称,默认为所有磁盘设备;

iostat

iostat  -x

 动态打印 iostat -x 2   --->2秒打印一次

 万能命令(sar)

 sar是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告。

   sar命令性能监控范围,文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用情况、进程活动及IPC有关的活动等。

sar选项

-A  :所有报告的总和

-u  :CPU利用率

-v  :进程、节点、文件和锁表状态

-r  :显示系统内存的使用情况

-B :内存分页情况

-b :缓存区使用情况

进程追踪命令(性能测试不常用)

strace命令是一个集诊断、调试、统计与一体的工具,可以使用strace对应用系统的调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者了解应用工作过程的目的。

strace选项

-p:跟踪指定的进程。

-f :跟踪由fork子进程系统调用。

-c:统计每一系统调用的所执行的时间、次数和出错的次数等。

-t :在输出中的每一行前加上时间信息。-tt时间确定到微秒级。

-e:输出过滤器,通过表达式,可以过滤掉不想要的输出。

-o  filename:默认strace将结果输出到stdout,通过-o可以将输出写入到filename文件中。

 

 

posted on 2017-10-25 16:43  赛兔子  阅读(548)  评论(0编辑  收藏  举报

导航