性能调优笔记(一)

一些 基本概念:

页面响应时间=网络延迟时间+应用延迟时间(数据库延迟时间+应用延迟时间)

影响性能的因素:

1.系统框架 2.操作系统等硬件因素3.中间件4.db5.应该程序

一版的 关系:

CPU进程等待 导致了 内存增加 导致 虚拟内存的增加 导致 词牌I/O开销增加

操作系统监控命令

vmstat  sar  iostat  top  free  uptime  netstat  ps  strace  losf

性能评估的重要指标 :

cpu user%+sys%<70% :好  user%+sys%=85% :坏  usre%+sys%>=95%:糟糕

内存  Swap In/Out (si/so)=0 :好   Swap In/Out(si/so)=10 左右 :坏  大量的 Swap In和Swap Out :糟糕

磁盘 iowait%<20% :好  iowait%=35%:坏 iowait>=50%:糟糕

 

根据自身系统的特点来分析容易出现的 性能瓶颈:

当有大量读写操作的时候,属于IO Bound 范畴,一般会出现 IO瓶颈

当有大量的 cup运算,或者大量服务请求并要求返回处理值的时候,属于CUP Bound范畴,一版容易出现CPU瓶颈

————————————————————————————————————————————————————————————————————————————————

cup性能评估:

vmstat命令

各个参数的含义:

procs:

r:等待CPU运行的进程数,如果较多,说明cpu繁忙

b:处于不可中断的进程数,通常意味着这些进程在等待I/O,此值长期不为0的话  分析下原因

memory:

swpd: 总共使用的虚拟内存大小,如果此值较高或者不断增加,说明内存不够

free: 空闲的物理内存

buff: 用作缓冲的内存大小,用来存储目录,目录有什么,权限等

cache:用作缓冲内存大小,给文件内容作缓冲

swap:

si 每秒从磁盘写入swap虚拟内存块的数量,如果这个值大于0,说明物理内存不够用了,或者内存溢出了

so 每秒从swap虚拟内存写入磁盘块的数量,如果值大于0,说明物理内存不够用了,或者内存溢出了

bi 每秒发送给块设备的数量

bo 每秒从块设备接受的数量

bi+bo值过大,且 wa值过大,则表示遇到系统磁盘IO瓶颈

system
in 每秒中断数,包括时钟 

cs 每秒的上下文切换数

这两个值越大,则由内核消耗的cpu就越多

cup

us:用于运行用户代码话费的百分比,us如果长期大于50%,则需要考虑优化程序或者算法

sy:用于运行核心代码话费的百分比

id:空闲的cpu百分比

wa:用于等待IO的百分比,wa值越高,说明I/O等待越严重(20%)

 

评估cup,主要关注r,us,sy,wa

问题一:

在一个多cpu的系统中,如果程序使用了单线程,会出现这么一个现象:cpu使用率不高,但是程序会非常卡的情况,单线程只会使用一个cpu,导致这个cpu占用率为100%,无法处理其他请求,而其他的cpu却闲置

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

sar命令:

sar -u 查看cpu利用率

sar -v 进程,节点,文件和锁表状态

sar -d 硬盘使用报告

sar -r 系统内存使用报告

sar -n 显示网络运行状态

sar -B 内存分页情况

sar -q 显示运行队列的大小,他与系统当时的平均负载相同

sar -W 系统交换活动

------------------------------------

sar -u

%user 用户进程消耗的CPU时间百分比

%nice 运行正常进程消耗的CPU时间百分比

%system 系统进程消耗的CPU时间百分比

%iowait 1/O等待所占CPU的时间百分比

%idle CPU空闲状态的时间百分比

-------------------------------------

sar -r

kbbuffers =buffer

kbcached =cache

kbcommit =RAM+swap

commit% 比值

------------------------------------------------------------------------------

sar -B

pgpin/s:表示每秒从磁盘或swap写入到内存的字节数

pgpout/s:表示每秒从内存置换到磁盘或swap的字节数

 

------------------------------------------------------------------

要判断 cpu存在瓶颈  sar -u 和 sar -q

要判断内存存在瓶颈 sar -B sar -r 和 sar -W

要判断I/O存在瓶颈 sar -b ,sar -u ,sar-d

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

top命令:

-b :批次模式运行,通常用来将top的输出结果传送给其他程式或储存文件

-c :显示执行任务的命令行

-d :设定延迟时间

-h :帮助

-H :显示线程。

-i  :显示空闲的进程

-n :执行次数,一版和-b搭配使用

-u :监控指定用户的相关进程

-U :监控置顶用户相关进程

-p :监控置顶的进程。当监控多个进程时,进程id以逗号分隔。这个选项只能在命令行下使用

-s :安全模式操作

-v :显示top版本,然后退出

-M :自动显示内存单位

top 交互命令

1.全局命令

回车,空格:刷新显示信息

?,h:帮助

=:移除所有任务显示的限制

A:交替显示模式切换

B:粗体显示切换

d,s:更改界面刷新时间间隔

G:选择其他窗口

I:Irix或Solaris模式切换

u,U:监控指定用户的相关进程

q:退出 top

r:重新设定进程的nice值

W:储存当前设定

Z:改变颜色模板

2.摘要区命令:

l:平均负载及系统运行时间显示开关

m:内存及交换空间使用率显示开关

t:当前任务及CPU状态显示开关

1:汇总显示cpu状态或分开显示每个CPU状态

 3.任务区命令

外观样式

b:黑体/反色显示高亮的行列

x:高亮显示排序的列

y:高亮显示正在运行的任务

z:彩色/黑白显示、

显示内容:

c:任务执行的命令行或进程名称

f,o:增加和移除进程信息栏位及调整进程信息栏位的显示顺寻

H:显示线程

S:时间累计模式

u:监控置顶用户的相关进程

任务排序

M:按内存使用率排序

N:按PID排序

P:按CPU使用率排序

T:按Time+排序

 

 

 

 

pid:进程id

user:用户

PR:优先级

NI:nice值,负值表示高优先级,正直表示低优先级

VIRT:进程使用的虚拟内存总量

RES:进程使用的,未被换出的物理内存大小

SHR:共享内存大小

%cpu :cpu占用时间百分比

%MEM: 进程使用的物理内存百分比

TIME+:进程使用的cpu时间总计

COMMAND 命令名/命令行

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

ps 命令 查进程:

ps -aux|grep xxxx

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

netstat -ant |grep LISTEN 查看被监听的端口号

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

 

 

      

posted @ 2016-11-15 19:34  明镜止水丨  阅读(308)  评论(0编辑  收藏  举报