服务器性能测试范围
测试目的:
发现服务器的性能瓶颈。配置的不同能够承载的最大任务数不同,能够承载的压力也不同。
CPU
内存
磁盘
网络
版本
测试与生产的环境配置不同?
通过多次压测来计算性能耗损。
性能损耗的计算方式
多次压测后的性能预估
横线是服务器数目
竖线是服务器指标
进程与线程
定义与区别
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能够独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源。一个线程可以创建和撤销另一个线程。
一个线程只能属于一个进程,而一个进程可以拥有多个线程。
线程是进程工作的最小单位。
一个进程会分配一个地址空间,进程与进程之间不共享地址空间。即不共享内存。
同一个进程的不同的多个线程,共享父进程的地址空间。
线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
进程-优点
每个进程互相独立,不影响主程序的稳定性,子进程崩溃不影响其他进程。
通过增加CPU,可以扩充性能。
可以尽量减少线程加锁与解锁的影响,极大的提高了性能。
进程-缺点
逻辑控制复杂,需要和主程序交互。
多进程调度开销大。
线程-优点
程序逻辑和控制方式简单
所有进程可以直接共享内存和变量等。
线程方式消耗的总资源比进程方式少
线程-缺点
每个线程与主程序公用地址空间,最大内存地址受限。
线程之间的同步和加锁不易控制。
一个线程的崩溃可能影响到整个程序的稳定性。
Linux服务器内存监控-top命令
top:能够实时监控系统的运行状态,并且可以按照cpu以及内存等进行排序。语法:top -hv | -abcHimMsS -d delay -n iterations [-u user | -U user] -p pid [,pid ...]
[zhimu@localhost ~]$ top -hv
top: procps version 3.2.8
usage: top -hv | -abcHimMsS -d delay -n iterations [-u user | -U user] -p pid [,pid ...]
-h:帮助
-p:监控指定的进程。当监控多个进程时,进程ID以逗号分隔。这个选项只能在命令行下使用。
M:按内存使用率排序
P:按CPU使用率排序
z:彩色/黑白显示。
top中的load average:系统的运行队列的平均利用率,也可以认为是可运行进程的平均数。三个值分别表示在最后的1分钟,5分钟,15分钟的平均负载值
top中在单核cpu中load average的值为1时表示满负荷状态。同理在多核cpu中满负载的load average的值为1*cpu核数。
vmstat
可以监控操作系统的进程状态、内存、虚拟内存、磁盘IO、CPU的信息。语法:vmstat [-a] [-n] [-S unit] [delay [count]]
-S : 使用指定单位显示。参数有k,K,m,M,分别代表1000,1024,1000000,1048576字节(byte)。默认单位为K(1024 byte)
free
-h
-m
mpstat
mpstat最大的特点是:可以查看多核心CPU中每个计算核心的统计数据。语法:mpstat [-P {|ALL}] [internal [count]]
-p {|ALL} 表示监控哪个CPU,CPU在[0,cpu个数-1]中取值
internal 相邻的两次采集的间隔时间
count采样次数,count只能和delay一起使用
当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始。输出为前一个interbal时间段的平均信息。
netstat
-n:转换数字显示
-l :仅列出有在listen(监听)的服务状态
-p :显示建立相关链接的程序名
-t :显示TCP相关选项
-u :仅显示UPD相关选项
-i :显示自动匹配接口的信息
-c :每隔一个固定时间,执行该netstat命令。
iostat
iostat [ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [
-j { ID | LABEL | PATH | UUID | ... } [ device [...] | ALL ] ] [ device [...] | ALL ] [ -p
[ device [,...] | ALL ] ] [ interval [ count ] ]
-x device 输出指定要统计的磁盘设备名称,默认为所有磁盘设备。
iostat -x xxx 3 2 //每隔3秒打印2次xxx磁盘的信息 ,(%util 繁忙程度)
万能命令
sar简介
(System Activity Reporter 系统活动情况报告)目前Linux上最为全面的系统系统性能分析工具之一,可以从多方面对系统的活动进行报告。
sar的性能监控范围
文件的读写情况,,系统调用的使用情况,磁盘I/O,CPU效率,内存使用状况,进程活动以及IPC有关的活动等。
sar [ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -i interval ] [ -m ] [ -p ] [ -q ] [ -r ] [ -R ] [ -S ] [ -t ] [ -u [ ALL ] ]
[ -v ] [ -V ] [ -w ] [ -W ] [ -y ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ -n { keyword [,...] | ALL } ] [ -I { int [,...]
| SUM | ALL | XALL } ] [ -P { cpu [,...] | ALL } ] [ -o [ filename ] | -f [ filename ] ] [ --legacy ] [ -s [ hh:mm:ss ] ] [ -e
[ hh:mm:ss ] ] [ interval [ count ] ]
sar语法说明
在命令行中,n和t两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有的参数,n为采样次数,是可选的。默认值是1,-o file表示将命令结果以二进制格式存放在文件中,file在此处不说关键字,是文件名。options为命令行选项。
sar选项
-A :所有报告的总和
-u : CPU的利用率
-v :进程、节点、文件和锁表状态
-r :显示系统内存的使用情况
-B :内存分页情况
-b :缓冲区使用情况
Linux下的进程追踪命令
strace简介
strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应该工作过程的目的。
strace [-CdffhiqrtttTvVxxy] [-In] [-bexecve] [-eexpr]... [-acolumn] [-ofile] [-sstrsize] [-Ppath]... -ppid... / [-D]
[-Evar[=val]]... [-uusername] command [args]
strace -c[df] [-In] [-bexecve] [-eexpr]... [-Ooverhead] [-Ssortby] -ppid... / [-D] [-Evar[=val]]... [-uusername] command
[args]
strace选项
-p : 跟中指定的进程。
-f : 跟踪由fork子进程系统调用
-c : 统计每次系统调用的所执行的时间,次数和出错的次数等。
-t : 在输出中的每一行前加上时间信息。-tt 时间确定到微妙级。
-e : 输出过滤器,通过表达式,可以过滤掉你不想要输出。
-o filename : 默认strace将结果输出到stdout,通过-o可以将输出写入到filename文件中。
Linux监控工具
nmon
nmon是一种在linux操作系统上广泛使用的监控与分析工具,nmon所几率的信息是毕竟全面的,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文件中,然后通过nmon_analyzer工具产生数据文件与图形化结果。
nmon用法
-f 这是nmon必选参数,并且必须放在第一个,就是输出文件的意思;用该参数,nmon输出的文件名就是默认名称:hostname_date_time.nmon
-F <filename>这个参数和-f相同,只不过用户可以自己定义文件名称。
-s 采集数据的频率
-c 采集数据的次数
-t 输出最小化资源的进程数据
-h 查阅帮助。
nmon_analyzer重点sheet
SYS_SUMM 系统汇总页,包含cpu占有率变化情况,磁盘IO的变化情况等信息;
AAA 关于操作系统以及nmon本身的一些信息
CPUnn 显示执行时间内CPU占用情况
CPU_ALL 所有CPU的概述,显示所有CPU平均占用情况
CPU_SUMM 每一个CPU在执行时间内占用情况
DGBUSY 磁盘组每个hdisk设备平均占用情况;
DGREAD 每个磁盘组的平均读情况;
DGSIZE 每个磁盘组平均的读写情况
DGWRITE 每个磁盘组平均写情况
DGXFER 每个磁盘组I/O的每秒操作
MEM 内存相关的主要信息,使用、空闲内存大小等。
NET 显示系统中每个网络适配器的数据传输速率(千字节/秒)
PAGE 本sheet统计相关页信息的记录
Linux定时任务
crontab
linux系统是由cron这个系统服务来控制的,Linux系统上包含很多的计划性工作。使用者自己也可以设置计划任务,所以Linux系统提供了使用者控制计划任务的命令
/sbin/service crond status 查看定时任务的服务是否启动
reload 重新载入配置
crontab的服务权限:
crontab的权限管理存储在cron.allow文件与cron.deny文件中。如果没有可以创建在etc目录下
cron.allow文件存储的是允许那些用户使用crontab
cron.deny则相反
命令例子:
晚上11点到早上7点之间,每隔一小时重启smb
- 23-7/1 * * * /etc/init.d/smb restart
每月的4号与每周一到周三的11点重启smb
0 11 4 * mon-wed /etc/init.d/smb restart
一月一号的4点重启smb
0 4 1 jan * /etc/init.d/smb restart
每小时执行/etc/cron.hourly目录内的脚本
01 * * * * root run-parts /etc/cron.hourly