uplooking0611

来源:互联网 发布:广告宣传设计软件 编辑:程序博客网 时间:2024/05/21 23:47

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Heiti SC Light'; min-height: 12.0px}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Heiti SC Light'}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}span.s1 {font: 12.0px 'Heiti SC Light'}span.s2 {font: 12.0px Helvetica}span.Apple-tab-span {white-space:pre}

uplooking 笔记 0611下午

 

优化

性能调优的原则

1,有目的调优,清楚要调整什么东西,指标

2,一次只对一个领域进行调优:对方网络,服务商之间问题,自己的带宽,请求处理,存储

3,每次只改动一个设置

4,至少用2个公司的测试分析软件(有推荐吗?ab命令在测试静态化页面很好,每次只能测试一个页面,不能模拟真实用户的使用,对动态话页面不靠谱不准确,webbanch可以定义脚本,可以模拟用户行为,webbanch本身性能不好,不能模拟大量用户,LR 很真实,贵;硬件 一台可以模拟20万用户。生成的报告的侧重点不一样,    。综合各家报告,折中

5,经验是最好的分析工具

6,知道什么时候该停下来,要有稳定性测试

 

方法

1,对性能描述的具体化:详细地描述出当前的性能情况是什么样子的:请求到server时间,处理时间(计算,db访问。。。),内容响应。补充:系统基础信息

2,折中的分析和调试,性能和稳定性,和成本;分析工具本身也是要占用资源(分析工具独立于系统之外)mysql enterprise monitor  (server,agent,agent装在mysql proxy,分开机器,修改proxy配置,性能计算和统计在另外的机器上;

多种工具综合使用

 

工具,命令

1top

统计信息区(mem-buffers,swap-cache)

top-当前时间 up 系统运行时间,登陆用户数,系统平均负载1分钟,5分钟,15分钟内 运行队列(等待放入cpu进程运算的进程,没有等待io操作结果的进程即数据都获取了,没有进程没有主动进入等待状态wait,进程没有被停止或被等待终止,满足以上3点,才可放入)里的平均进程数量,可观察一段时间内,cpu的繁忙程度

第2行:task 进程总算total,几个running,sleeping,stopped, zombie

cpu(s),用户空间us(ls 逻辑元算,搞软的),内核空间sy(真正读,向内核申请调用硬件,来硬的),用户进程空间内改变过优先级的进程占cpu的%(即改变过nis值的) ni,空闲cpu% id,等待io输入输出的cpu% wa,硬中断(向硬件发收信cpu需要中断下来处理)请求 hi,软中断请求 si,虚拟机处理时间st(不用管)

Mem  内存使用情况,(用free命令更准确一些),物理内存总量 total,已使用的内存总量(用free -m,第2行的used才是真正的用的内存数,used第一行=buffers+cached+第2行used,) used,第一行的free =第2行free-buffers-cache,第一行是真正的空闲空间。swap 的3项就是字面意思

 

buffer--相关程序运行支持的文件放的地方

cache--如果要读取外部资料,放在cache

 

进程统计区

PID:进程id

USER:用户名

PR:优先级 越大越好,符号是控制符号

NInice值,优先级,越负越高,-20+20

用ni值决定谁先获得内存,如果nice相同看pr

 

VIRT:进程使用的虚拟内存的总量,单位是kb

RES:进程正在使用的未被换出的物理内存,没有被释放或换到swap的内存 virt=res+swap(?),

SHR:共享内存大小,kb

S:进程状态,s sleepr runcpu里正在运行的进程+运行队列的进程),z zombiet trace或停止(一旦trace,系统发起要获取进程的状态,那么就停止),d 不可中断的睡眠

%CPU:top没3秒更新,从上次到现在使用率

 

%MEM:使用物理内存的%

TIME+:进程使用cpu的时间的总计 ,精确到0.01秒

TIME:进程使用cpu的时间的总计,精确到1秒

COMMAND:命令名

 

top使用方式 -d 制定刷新间隔,默认上3秒

-p 进程号

-i 不现实闲置或僵尸进程,只现实running的进程

 

交互式 按1,按k,按i,按R RESET NICE值,按f 添加现实选项,按o 调整现实顺序(shift+b,b向前向后调),c 切换现实命令名称,显示完整命令行,P 根据cpu使用的%进行排序,M根据内存使用多少

按回车立即刷新

W,保存当前设置  .toprc

 

========================

0612 linux瓶颈分析

cpu,mem,io,网络 一般是这4个方面

比如:

网卡接受大量数据包,会占用cpu,大量的cpu计算,可能占用大量的mem,大量的mem使用交换,又可能导致io(网卡质量好,占用cpu低)

 

是什么样特点的系统:

io密集(mem也多):数据库

cpu密集:大量运算,web服务器

 

什么情况下,算是出现了瓶颈?先需要一个基线系统,基准。可以通过mem角度观察,它是cpu和io的桥梁

用vmstat

cpu(调度中断《网卡送了数据包给内核,就是一个中断,cpu停止当前正在运行的进程和线程,换出,就是中断)和线程

内核空间(内核态):

用户空间(用户态):

2者对cpu的占用约是:3:7?(除去idle后的)(一般地,操作硬件的就是系统态)

上下文context切换,linux把每个core当做独立的处理器,处理50-50000线程,彼此切换,切入和切出就是 上下文切换

什么情况会引发上下文切换变多呢?优先级被提高,比如发现硬件中断,内存调入调出

如果当前线程数超过内核数,线程有被阻塞

 

cpu利用率,一般通过 us,sy,id,wa

还可以看看 load average

线程数是内核数的1-3倍

 

procs运行队列

r:当前运行队列里有多少线程,处于可运行,但是cpu还没有执行它们

b:block当前阻塞,并且等待io的进程

 

swpd:swap的大小

 

memory

buff

cache

 

(占在内存角度看东西的)

swap

si(从swap写到内存)

so(写入交换分区,swap out)

 

bi(从磁盘块读到内存)

bo(从内存到磁盘写出)

 

in(中断数,当前中断被处理的数目)

cs(上下文切换到恶数目)

 

us 用户态

sy 内核态

 

st 虚拟机

测试命令

dd if=/dev/zero of=/tmp/test.img bs=1M count=500

 

ab -n 1000000 -c 1000 http://19.../index.html

结论

r很多,b少

swap 没有

free在减少,减少的用在了cache里

siso没有

bi

pbflush' 每5秒写磁盘

bo5秒高一点

in 中断多了30-40

cs200高到了10000,有大量的上下文切换,有很多计算

cssy 11

 

计算密集型应用

io少

 

系统态的比较多,是因为网络数据包多(因为有ab在同一台机器上运行啊)

 

第2大 子系统 内存

 

oracle鼓励使用swap,用空间换性能

 

内存页概念:x86 是4kb,内存到磁盘就是写内存页

页交换:内存和swap

内存分页:内核把内存的数据同步到磁盘上,叫memory paging

 

kswpd?

负责 查看内存空闲情况,如果低于page_low,一次性释放32个页,重复直到空闲内存高于page_high

如果内存有修改,会写回磁盘

如果有修改,但是没有必要写回磁盘,就交换到swap

5秒写一次

 

pbflush:内存同步磁盘文件

和kswpd功能有点类似

 

脏页 缓存的数据比磁盘新,缓存中的数据叫做脏页

 

主要页错误:major page fails

 

次要页错误:

使用虚拟的内存层来映射(内存+swap),当进程被启动,cpu扫描在cpu高速缓存和物理内存,要去磁盘找,就是主要内存错误

如果物理内存有,写到cpu高速缓存,是次要页错误;高速缓存有,要写到物理内存,也是次要页错误

 

 

发现大量主要页错误:当前中断很大,内核态很高。bibo很高,调整程序等,使之消失,或转为次要错误

 

大量次要页错误:si so会很多,有很少的io,。。。原因是物理内存不够了

 

io子系统

最慢的部分,

品牌区别不是太大。sad inter的比较好,稳定性和兼容性还有茶具,文件系统支持也有待提高

 

文件缓冲区:内核把主要页错误最小化,次要页错误最大化。free很少,是系统在高效地使用内存。

 

3种内存页,

1,read pages,通过主要页错误,从磁盘读入内存

2,dirty pages,内存种修改过的内存页,由pbflush写到磁盘

3,anonimous pages,属于某个进程,但是没有任何磁盘文件和它有关,kswapd把它们交换到swap中去。

 

使用命令snyc,fsnyc'函数把脏页写到磁盘

 

监控软件:top,vmstat,iostat

 

学会计算IOPS。比如10000转yd,125io操作/秒

 

如果内存不足也可能产生随机读

从vmstat那些项目可以看出内存不足,大量的bi,free很少,so很多,wa很大,那么很明显是内存不足

 

 

 

如果有cpu等待io的情况,说明磁盘超负荷了

计算磁盘的iops,计算磁盘的能力

确定应用是随机的还是顺序的io

监控swap,系统分区,虚拟内存,确保虚拟内存不是瓶颈

 

监控磁盘,iostat不是rhce5,6 自带的

 

网络子系统:带宽不足,再接一个线

 

 

具体案例见pdf

 

性能评估的指标:

1,响应时间

用户响应时间:用户发送请求耗时(计算能力和带宽),用户联通isp的时间(直到flv起来,在线点播才发展),isp联通服务提供商的时间,到,内部系统响应时间(cpu计算周期,cpu cache大小,物理内存的速度和容量,存储设备io物理响应时间200iops,raid,NAS,SAN,操作系统线程和进程的处理能力,内核驱动模块的处理能力《raid卡的驱动卡,ku6 raid卡驱动是小厂商定制的,高20%》,事务响应时间《事务子licheng响应时间之和,进程和线程冲突调度时间,内存和swap调度时间,磁盘io冲突解决时间》

 

2,吞吐率

网络吞吐率:在线用户总数,并发总数(此刻同时访问),单位时间内数据包数

 

和io吞吐率:内存中靶率(内存和swap交换频率《变大,io压力大》,内存和。。),磁盘io(读文件,读block,写文件)

3,资源利用率

cpu,

内存,free buffer cache 看看比例

磁盘利用率 df 看看磁盘,df -i 看看inode的情况

 

另,例子:外贸网站

要考虑国外用户的响应时间:美国-中国有3根线,isp-isp,看看北美isp提供商《aol》,用户到isp的时间,客户机的性能忽略)

开发平台:java,数据库     ---系统响应时间

做一个代理服务器,甚至直接放在美国,但数据库要放在中国

 

吞吐率:

网络吞吐率:

在线学习系统:定期访问,高峰时期和普通网站不同,

经贸网站:并发量不高,要保证稳定性,但是带宽要求不高

io吞吐率:

 

资源利用率:

监控

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击