换作Linux:

 1、杀使用内存大,非必要的进程
 2、增加连接数
 3、磁盘分区的碎片整理
 4、服务优化,把不要的服务关闭
 5、更换性能更好的硬件,纵向升级
常见优化手段:
 1、更换性能更好的硬件,纵向升级
 2、系统配置优化
 3、优化应用程序,修正不正确地方
 4、负载均衡,把应有平分到多台机器上,横向升级
 5、网络优化,使用速度更高的网卡
 6、做Raid,LVM,提高硬盘的IO
 7、涉及数据库的话,就要正确选择数据库系统。
二、影响系统性能的因素:
 1、内存
 2、CPU运算能力
 3、硬盘的IO
 4、网络带宽
常见性能数据采集工具:
 
 CPU vmstat,sar,top,ps,cat /proc/cpuinfo
 内存 vmstat,sar,free,iostat
 硬盘 vmstat,sar,df -h,iostat
 网络 sar,ifconfig, cat /proc/net/dev
 
三、CPU的性能数据采集
3种指标衡量cpu是否成为性能瓶颈:
 1、总体利用率
  确定CPU的运算速度是否足够
 2、平均负载
  top,uptime
  系统总体性能指标
 3、独立进程的CPU损耗量
  让您高清楚哪个进程造成CPU资源不够 
 1、vmstat
CPU 列下的:
 us 用户进程占用的cpu时间百分比
 sy 内核进程 init
 id 空闲时间比
 wa CPU等待外部设备的时间
us,sy 如果数值比较高,说明CPU正在告诉运算当中 ,他们的比例一般 1:1 比较正常
us 特别高,一般就说明某个用户程序占用大量的CPU,top 。一般这些现象出现在cpu密集型的应用上。
id 数值比较高,代表cpu的运算能力不错。
wa 数值比较高,说明cpu大部时间用于等待外设。一般都是硬盘IO速度慢导致。
如果id数值高,wa数值非常低,但是系统很慢,那很可能就是内存造成瓶颈;
如果id数值高,wa数值非常高,但是系统很慢,那很可能就是硬盘造成瓶颈.
id值持续低于10,不正常。
wa值持续高于6,不正常
[root@dns 06]# vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 4  0      0 1436968  78036 268800    0    0    39    12 4067 2526 12  9 79  1  0
 2  0      0 1436764  78036 269112    0    0   146     0 19433 11489 41 34 20  5  0
 1  1      0 1436464  78052 269392    0    0   148   268 19175 11843 42 35 19  4  0
 1  0      0 1436240  78052 269712    0    0   152     0 18761 11232 42 33 20  5  0
 2  0      0 1435692  78052 270020    0    0   144     0 19024 11648 41 34 20  5  0
 
procs列下的b,阻塞的意思,数值越低越好
 
2、使用uptime
10:50:45 up  1:28,  5 users,  load average: 1.10, 0.96, 0.90
 如果数值持续高于3,所以系统正在繁忙运算,目前还算可以。
 如果数值持续高于8,说明CPU严重不够用。
3、使用sar采集数据
 安装sysstat,要让状态数据采集服务生效,必须重启
 
 sar 会在后台周期的采集数据,数据保存在/var/log/sa/* ,二进制格式,要查看就要使用sar
 sar 直接运寻,查看当前cpu整体使用情况
 sar -f 指定要查看的日志文件
  sar -f /var/log/sa/sa21
 sar -u 2 5
Linux 2.6.18-128.el5 (dns.upl.com)      2010年08月23日
11时02分30秒       CPU     %user     %nice   %system   %iowait    %steal     %idle
11时02分32秒       all     26.82      0.00     21.55      0.00      0.00     51.63
11时02分34秒       all     26.80      0.00     21.59      0.00      0.00     51.61
11时02分36秒       all     27.32      0.00     21.55      0.00      0.00     51.13
11时02分38秒       all     27.68      0.00     21.70      0.00      0.00     50.62
11时02分40秒       all     27.50      0.00     21.00      0.00      0.00     51.50
Average:          all     27.22      0.00     21.48      0.00      0.00     51.30
 
# sar -u -o /tmp/test/cpu_stat  2 5  <--把结果保存到文件
[root@dns 06]# sar -q 2 5   《--运行队列
Linux 2.6.18-128.el5 (dns.upl.com)      2010年08月23日
11时18分37秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
11时18分39秒         1       142      1.69      1.54      1.21
11时18分41秒         1       142      1.63      1.53      1.21
11时18分43秒         1       142      1.63      1.53      1.21
11时18分45秒         1       142      1.63      1.53      1.21
11时18分47秒         1       142      1.66      1.53      1.21
Average:            1       142      1.65      1.53      1.21
runq-sz 注意这个值,如果长期》=6,说明cpu处理能力不足
CPU成为性能瓶颈的指标总结:
 us数值过高
 sy数值过高
 cpu空闲时间持续接近0
 长时间有运行队列
解决方法:
 1、升级cpu
 2、增加cpu个数
 3、把应用均衡到多个设备,集群
实验:模拟cpu密集型应用,造成cpu性能瓶颈
实验环境:LAMP
实验的工具: cputest.php
工作原理:循环调用phpinfo()
测试方法:使用webbench -c 256 -t 60 http://10.1.1.21/cputest.php 进行压力测试
测试之前的数据采集:
             total       used       free     shared    buffers     cached
Mem:          1001        816        185          0        171        519
-/+ buffers/cache:        125        876
Swap:         4094          0       4094
[root@squid www]# vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0    116 190032 175784 531960    0    0    40    71   30   29  1  0 93  6  0
 0  0    116 190032 175784 531960    0    0     0     0 1004   36  0  0 100  0  0
 0  0    116 190032 175788 531956    0    0     0    14 1005   38  0  0 100  0  0
 0  0    116 190032 175788 531960    0    0     0     0 1004   33  0  0 100  0  0
 0  0    116 190032 175788 531960    0    0     0     0 1004   36  0  0 100  0  0
数据采集:
1) top 观看哪个进程占用资源最多
2)sar -u 2 30 观看cpu总体利用率
3)free -m 查看内存是否足够
[root@squid www]# sar -u 2 40
Linux 2.6.18-128.el5 (squid.upl.com)    2010年08月23日
13时43分03秒       CPU     %user     %nice   %system   %iowait    %steal     %idle
13时43分05秒       all      0.00      0.00      0.00      0.00      0.00    100.00
13时43分07秒       all      0.00      0.00      0.00      0.00      0.00    100.00
13时43分17秒       all     91.03      0.00      2.44      0.00      0.00      6.53
13时43分21秒       all     97.56      0.00      2.44      0.00      0.00      0.00
13时43分23秒       all     97.31      0.00      2.69      0.00      0.00      0.00
13时43分25秒       all     97.26      0.00      2.74      0.00      0.00      0.00
[root@squid ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1001        581        419          0         85        341
-/+ buffers/cache:        154        847
Swap:         4094          0       4094
三、内存性能数据采集
 页“Page”,默认页大小 4kb. 页表--记录虚拟页和物理页映射关系。
 swap
 调页(paging): 把物理内存上的暂时不出于运行状态的数据掉到交换分区,叫做 page-out; page-in ,把马上需要用到的数据从交换分区读到物理内存
 
工具:
 1、free
[root@squid www]# free -m
             total       used       free     shared    buffers      cached
Mem:          1001        648        353          0         86        347
-/+ buffers/cache:        214        787
Swap:         4094          0       4094
 
buffers 缓冲区,用户缓存经常分文块设备的块,默认块大小的1kb
cached  高速缓存,保存文件的状态信息,inode信息
 
2、procinfo
# yum install procinfo -y
# procinfo
注意: 如果数值比较大,说明内存不够,每50次page out就会造成1秒延迟
page out:        0
Load average: 0.04 6.04 16.77 1/158 1580
系统有158个进程,其中一个处于运行状态,当前cpu正为进程id 1580进程服务 
3、sar 
 sar -B
# sar -B 2 5
Linux 2.6.18-128.el5 (squid.upl.com)    2010年08月23日
14时05分22秒  pgpgin/s pgpgout/s   fault/s  majflt/s
14时05分24秒      0.00      0.00     27.00      0.00
14时05分26秒      0.00      0.00     12.00      0.00
14时05分28秒      0.00     18.00      6.50      0.00
14时05分30秒      0.00      0.00      6.47      0.00
14时05分32秒      0.00    144.72      6.53      0.00
Average:         0.00     32.40     11.70      0.00
pgpgin/s 每秒中从磁盘读取到物理内存的页面数
pgpgout/s 每秒中从内存调出到磁盘的页面数  ####
fault/s  每秒页故障数目
majflt/s 每秒的主要页面故障数目
 需要对历史作对比才能看出问题。
# sar -r 2 5
3、vmstat
# vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0    112 455068  90852 363692    0    0    40    70    3   30  1  0 93  6  0
 0  0    112 455068  90852 363692    0    0     0     0 1003   38  0  0 100  0  0
 0  0    112 455068  90852 363692    0    0     0     0 1003   35  0  0 100  0  0
 0  0    112 455068  90856 363688    0    0     0    14 1007   37  0  0 100  0  0
 0  0    112 455068  90856 363692    0    0     0     0 1005   34  0  0 100  0  0
注意  memory 列 ,还后 swap 列下的si ,so 如果 si,so数值比较大,也表示系统产生大量的paging ,也就是说明内存不够
 
优化建议:
 1)使用top命令 ,按 内存使用百分比 排序 。判断哪个进程占用内存最多,然后决定是否有需要结束它,后者暂停他
 kill -STOP #PID
 kill -START #PID
 2) 增加内存
 3)如果page out并不是很多,但是内存使用百分比还是很高,设定多个swap分区,然后多个交换分区最好分布在不同的硬盘。
/dev/sda3       swap      swap   defaults,pri=1        0 0
/dev/sda7       swap      swap   defaults,pri=1        0 0
 必须设定相同的优先级 pri=1
swapon /dev/sda3
swapon /dev/sda7
 4) 使用pam模块的限制功能,或者应用程序本身资源限制功能,限制最大内存使用。
 ulimit  <-- /etc/security/limits.conf
实验二:模拟内存密集型
实验工具: memtest.php
工作原理:循环让php读取大尺寸文件(300KB左右)
测试方法:
 被测试机器现在在网站的根目录运信cpf.sh产生大尺寸文本
使用webbench -c 200 -t 60 http://www.upl.com/memtest.php
数据采集:
 
 1)sar -B 2 20
 2) top 《-- shift + m
 3) sar -u 2 20
 4)free -m  
 
[root@squid www]# sar -B 2 30
Linux 2.6.18-128.el5 (squid.upl.com)    2010年08月23日
14时36分03秒  pgpgin/s pgpgout/s   fault/s  majflt/s
14时36分05秒      0.00      0.00    483.08      0.00
14时36分07秒      0.00    527.45    238.24      0.00
14时36分09秒      0.00      0.00    647.69      0.00
14时36分12秒   5041.60 166700.80 176096.40     31.60
14时36分36秒    119.27   2655.21   1359.17      3.00
14时36分38秒   2700.50  20352.24  14664.18     60.20
14时36分40秒   1285.57  29828.86  18180.10     41.29
14时36分42秒   1312.56  33736.68  13102.51     38.69
 
# sar -u 2 20
14时31分37秒       all     25.49      0.00     68.20      4.85      0.00      1.46
14时31分39秒       all     28.43      0.00     70.07      0.00      0.00      1.50
14时31分41秒       all     26.80      0.00     69.73      1.99      0.00      1.49
14时31分43秒       all     25.31      0.00     72.95      0.00      0.00      1.74
14时31分45秒       all     25.92      0.00     73.39      0.00      0.00      0.69
14时31分47秒       all     18.66      0.00     38.31      0.25      0.00     42.79
 
===========================
四、磁盘I/O性能数据采集
1、iostat
# iostat
Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             309.43      2034.07      9602.85     901297    4255022
sda1              0.33         5.51         0.03       2440         14
sda2            307.83      1974.26      9602.20     874794    4254736
tps 该设备每秒中产生的IO次数,数值越大,越繁忙
Blk_read/s 每秒中该设备读取多少个数据块 1块=512字节
Blk_wrtn/s
Blk_read  一共从该设备读取了多少个数据块
通过对历史数据的对比,可以粗略判断是否磁盘IO猛涨
# iostat 2 5
# iostat  -d sda 2 5  针对某个设备或分区
# iostat  -x  -d sda 2 5
r/s 平均每秒产生多少个读请求数目
w/2 平均每秒产生多少个写请求数目
avgqu-sz  平均每秒有多少个IO队列,数值越大,磁盘越忙 
await   设备发出i/o请求+排队时间+处理该IO的时间,单位:毫秒 ##
svctm  设备服务时间(处理该IO的时间) ## 
%util 设备的使用带宽百分比,数值越高,磁盘越忙  ##
Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s 
sda               2.36     3.55  5.51  209.12  48.52     32.52    
avgrq-sz avgqu-sz  await  svctm  %util 
32.13        0.06    7.40   3.56   2.71
该机器非常慢,通过捕捉磁盘数据,判断到时候什么原因导致:
1)磁盘获取大量的请求,以至于服务时间太大svctm
 r/s   w/s非常小,不算大,排除该原因
2)磁盘带宽利用百分比,很高。
 %util 表明带宽利用率很小,排除该原因
3)该磁盘原本速度就慢。
 
# iostat  -x  -d | sort  -k11,11rn 《--安服务时间倒序排列
 
2、sar
 sar -d 和iostat基本一样
3、vmstat
 看IO列
如果procs列b下的数值比较,而且有较高的IO,CPU 和 MEM 和SWAP 数值都非常正常,基本可以断定是磁盘造成性能瓶颈
 
4、优化建议
 
 A) 分区优化
/dev/sda1 /boot
/dev/sda2 swap
/dev/sda3 /tmp
/dev/sda5 /var
/dev/sda6 /usr
/dev/sda7 /
 如果服务器打算运行mysql服务端,那么可以考虑把数据目录放在/dev/sda3或者/dev/sda5
 B) 使用Raid
 如果原本存在备份策略的前提下,可以完全考虑使用raid 0
 否则的话,建议raid5
 磁盘建议使用scsi,考虑用SAN
 3)文件系统的优化
 涉及到分区格式
  mkfs.ext3 -b <---指定块大小
 总结:如果该文件系统存方的文件平均尺寸比较小,那么就可以采用默认的块大小(1KB),如果文件尺寸比较大,那么可以采用4KB或者8KB
# mkfs.ext3 -b 4096 /dev/sda5 《--定义块大小为4KB
 对于那些经常读取文件的文件系统,可以在挂载的时候取消访问时间修改的功能,一般应用在静态文件服务,例如:web,缓存服务器
 
LABEL=/vmware       /vmware    ext3   defaults,noatime        1 2
       ^
 4)修改内核参数
 # echo "205141" > /proc/sys/fs/file-max
 增加允许打开的最大文件个数
 5)使用内存文件系统
 特点:直接使用内存保存数据,速度非常快;
  如果关机,来不及做额外的保存工作的话,上面的数据肯定就丢失。
 比较适合:经常读取该文件,而且修改请求比较少的小文件
# vim /etc/fstab
tmpfs       /tmpfs    tmpfs   defaults,size=64m       0 0 
# mount /tmpfs
 
 6) 使用支持日志的文件系统
  ext3,ext4,JFS,XFS,Reiserfs
五、网络性能采集数据
[root@squid /]# sar -n DEV 2 2
Linux 2.6.18-128.el5 (squid.upl.com)    2010年12月09日
16时13分32秒     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
16时13分34秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
16时13分34秒      eth0      1.50      0.50     93.00     81.00      0.00      0.00      0.00
16时13分34秒      eth1      1.00      0.00     74.00      0.00      0.00      0.00      0.00
16时13分34秒      sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
16时13分34秒    vmnet1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
rxbyt/s   每秒钟接受的包的大小,单位:字节
txbyt/s   发送
 
# sar -n EDEV 2 2  《--查看错误的网络信息

linux 系统调优2的更多相关文章

  1. Linux系统调优1

    Linux在进行系统调优的时候,首先要考虑整个操作系统的结构,然后针对各个部分进行优化,下面展示一个Linux系统的各个组成部分: 有上图可以看出,我们可以调整的有应用程序,库文件,内核,驱动,还有硬 ...

  2. Linux系统调优——CPU(一)

    (1).系统调优思路 性能优化就是找到系统处理中的瓶颈以及去除这些的过程,性能优化其实是对OS 各子系统达到一种平衡的定义.具体步骤如下: 1. 系统的运行状况:  CPU -> MEM  -& ...

  3. Linux系统调优相关工具

    一.系统调优概述 系统的运行状况: CPU -> MEM -> DISK*-> NETWORK -> 应用程序调优 分析是否有瓶颈(依据当前应用需求) 调优(把错误的调正确) ...

  4. linux系统调优工具

    系统调优思路 性能优化就是找到系统处理中的瓶颈以及去除这些的过程,性能优化其实是对 OS 各子系统达到一种平衡的定义.具体步骤如下: 1. 系统的运行状况: CPU -> MEM -> D ...

  5. Linux系统调优

    Linux核心参数都是放置在/proc下面:系统的参数都是放置在/proc/sys swap最好放置在运行最快的硬盘上面,但是swap并能取代ram,因为并有I/O上面的损耗,所以优先考虑检验内存没有 ...

  6. Linux系统调优——内核相关参数(五)

    修改内核参数有3种办法:一种临时修改,两种永久修改. 临时修改是使用sysctl [选项] [参数名=值]命令:永久修改是修改/etc/sysctl.conf文件或修改/proc/sys/目录下的对应 ...

  7. Linux系统调优——网络(四)

    (1).查看网络(Network)运行状态相关工具 1)nload监控总体带宽使用情况 nload需要自己安装,而且在安装前需要安装epel-release [root@youxi1 ~]# yum ...

  8. Linux系统调优——磁盘I/O(三)

    (1).查看I/O运行状态相关工具 1)查看文件系统块大小 对于ext4文件系统,查看文件系统块大小 [root@CentOS6 ~]# tune2fs -l /dev/sda1 | grep siz ...

  9. 1.linux系统调优

    首先来说调优是一门黑色艺术,使用来满足人的感知,通过人的感觉来进行配置,达到让人感觉操作系统速度很块的感觉. 操作系统拥有四个瓶颈:cpu,内存,网络,磁盘.调优主要是对上述四个子系统进行配置优化,其 ...

  10. Linux系统调优及安全设置

    1.关闭SELinux #临时关闭 setenforce 0 #永久关闭 vim /etc/selinux/config SELINUX=disabled 2.设定运行级别为3 #设定运行级别 vim ...

随机推荐

  1. C/S和B/S两种软件体系结构

    目前两种流行的软件体系结构就是C/S和B/S体系结构,下面对两种体系结构进行一下总结: 1.C/S(客户端/服务器模式): 客户端和服务器都是独立的计算机,客户端是面向最终用户的应用程序或一些接口设备 ...

  2. 意犹未尽而来的第一篇Android 逆向

    游戏:咕噜王国大冒险 平台:android 目标: 1. 去除乱七八糟提示(本篇目标) 2. 去除google弹窗 3. 破解“all stages” 破文开始: 1. 使用APKIDE反编译:搜索字 ...

  3. Codeforces Round #197 (Div. 2) : D

    这题也是一个线段树的水题: 不过开始题目没看明白,害得我敲了一个好复杂的程序.蛋疼啊.... 最后十几分钟的时候突然领悟到了题意,但是还是漏掉一个细节,老是过不去... 以后比赛的时候不喝啤酒了,再也 ...

  4. 【Uvalive 5834】 Genghis Khan the Conqueror (生成树,最优替代边)

    [题意] 一个N个点的无向图,先生成一棵最小生成树,然后给你Q次询问,每次询问都是x,y,z的形式, 表示的意思是在原图中将x,y之间的边增大(一定是变大的)到z时,此时最小生成数的值是多少.最后求Q ...

  5. 【BZOJ 3473】 字符串 (后缀数组+RMQ+二分 | 广义SAM)

    3473: 字符串 Description 给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串? Input 第一行两个整数n,k. 接下来n行每行一个字符串 ...

  6. 網站SSL加密原理簡介(2张图,握手有9个步骤,解释的很清楚)

    Secure Socket Layer說明 SSL是Secure Socket Layer(安全套接層協議)的縮寫,可以在Internet上提供秘密性傳輸.最早是Netscape公司所提出,SSL的目 ...

  7. JavaScript简介、语法

    一.JavaScript简介 1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? 没有什么直接的联系,Java是Sun公司 ...

  8. 【HDOJ】4585 Shaolin

    Set可解,Treap也可解.(1) Treap /* */ #include <iostream> #include <string> #include <map> ...

  9. 剧烈变化的移动互联网O2O

  10. ELK之topbeat部署

    topbeat定期收集系统信息如每个进程信息.负载.内存.磁盘等等,然后将数据发送到elasticsearch进行索引,最后通过kibana进行展示. 下面是具体的安装及配置步骤: 1.安装topbe ...