当前位置:文档之家› linux系统性能优化及瓶颈分析

linux系统性能优化及瓶颈分析

linux系统性能优化及瓶颈分析
linux系统性能优化及瓶颈分析

linux系统性能优化及瓶颈分析

一,用vmstat分析系统I/O情况

[root@localhost ~]# vmstat -n 3 (每个3秒刷新一次)

procs-----------memory--------------------swap--- ---io---- --system---- ------cpu--------

r b swpd free buff cache si so bi bo in cs us sy id wa

1 0 144 186164 105252

2386848 0 0 18 166 83 2 48 21 31 0

2 0 144 189620 105252 2386848 0 0 0 177 1039

1210 34 10 56 0

0 0 144 214324 105252

2386848 0 0 0 10 1071 670 32 5 63 0

0 0 144 202212 105252

2386848 0 0 0 189 1035 558 20 3 77 0

2 0 144 158772 105252 2386848 0 0 0 20

3 1065

2832 70 14 15 0

IO

-bi:从块设备读入的数据总量(读磁盘)(KB/S)

-bo:写入到块设备的数据总量(写磁盘)(KB/S)

随机磁盘读写的时候,这2个值越大(如超出1M),能看到CPU在IO等待的值也会越大

二,用iostat分析I/O子系统情况

如果你的系统没有iostat,sar,mpstat等命令,安装sysstat- 包,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU 使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

iostat的语法如下:

程序代码

iostat [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval [ count ] ]

-c为汇报CPU的使用情况;

-d为汇报磁盘的使用情况;

-k表示每秒按kilobytes字节显示数据;

-t为打印汇报的时间;

-v表示打印出版本信息和用法;

-x device指定要统计的设备名称,默认为所有的设备;

interval指每次统计间隔的时间;

count指按照这个时间间隔统计的次数。

iostat在内核和内核中数据来源不太一样,对于kernel , iostat 的数据的主要来源是/proc/partitions;在中,数据来源主要是/proc/diskstats和/sys/block/sd*/stat 这两个文件

#cat /proc/diskstats | grep sda

8 0 sda 1547188 1 4 2 45 0 9 22

8 1 sda1 936 1876 6 12

8 2 sda2 6 4

8 3 sda3 1270 1441 33 264

8 4 sda4 4 8 0 0

8 5 sda5 648 1442 0 0

8 6 sda6 648 1442 0 0

第1列: 磁盘主设备号(major)

第2列: 磁盘次设备号(minor)

第3列: 磁盘的设备名(name)

第4列: 读请求总数(rio)

第5列: 合并的读请求总数(rmerge)

第6列: 读扇区总数(rsect)

第7列: 读数据花费的时间,单位是ms.(从__make_request到end_that_request_last)(ruse)

第8列: 写请求总数(wio)

第9列: 合并的写请求总数(wmerge)

第10列: 写扇区总数(wsect)

第11列: 写数据花费的时间,单位是ms. (从__make_request到end_that_request_last)(wuse)

第12列: 现在正在进行的I/O数(running),等于I/O队列中请求数第13列: 系统真正花费在I/O上的时间,除去重复等待时间(aveq) 第14列: 系统在I/O上花费的时间(use)。

#iostat -x 1

Linux 03/27/2009

avg-cpu: %user %nice %system %iowait %steal %idle

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz

avgqu-sz await svctm %util

sda

sdb

sdc

每项数据的含义如下,

rrqm/s: 每秒进行merge 的读操作数目。即rmerge/s

wrqm/s: 每秒进行merge 的写操作数目。即wmerge/s

r/s: 每秒完成的读I/O 设备次数。即rio/s

w/s: 每秒完成的写I/O 设备次数。即wio/s

rsec/s: 每秒读扇区数。即rsect/s

wsec/s: 每秒写扇区数。即wsect/s

rkB/s: 每秒读K字节数。是rsect/s 的一半,因为每扇区大小为512字节。wkB/s: 每秒写K字节数。是wsect/s 的一半。

avgrq-sz: 平均每次设备I/O操作的数据大小(扇区)。即(rsect+wsect)/(rio+wio) avgqu-sz: 平均I/O队列长度。即aveq/1000 (因为aveq的单位为毫秒)。await: 平均每次设备I/O操作的等待时间(毫秒)。即(ruse+wuse)/(rio+wio) svctm: 平均每次设备I/O操作的服务时间(毫秒)。即use/(rio+wio)

%util: 一秒中有百分之多少的时间用于I/O 操作,或者说一秒中有多少时间I/O队列是非空的,即use/1000 (因为use的单位为毫秒),

如果%util 接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

svctm 一般要小于await (因为同时等待的请求的等待时间被重复计算了),

svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致svctm 的增加。

await 的大小一般取决于服务时间(svctm) 以及I/O 队列的长度和I/O 请求的发出模式。如果svctm 比较接近await,说明I/O 几乎没有等待时间;如果await 远大于svctm,说明I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核elevator 算法,优化应用,或者升级CPU。

队列长度(avgqu-sz)也可作为衡量系统I/O 负荷的指标,但由于avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的I/O 洪水。

io/s = r/s +w/s

await=(ruse+wuse)/io(每个请求的等待时间)

await*io/s=每秒内的I/O请求总共需要等待的ms

avgqu-sz=await*(r/s+w/s)/1000(队列长度)

以下数据其实与/proc/diskstats中除设备号与设备名外的其它数据是一一对应关系,只是统计的方法略有差别而已。

#cat /sys/block/sda/stat

1547772 7 0 8 14 2 0 34

三,sar -b 监控I/O

#sar -b 1 10

Linux 03/29/2009

12:19:40 AM tps rtps wtps bread/s bwrtn/s

12:19:42 AM

12:19:43 AM

12:19:44 AM

12:19:45 AM

12:19:46 AM

12:19:47 AM

12:19:49 AM

12:19:50 AM

12:19:51 AM

12:19:52 AM

Average:

-tps:每秒钟对磁盘发送transfer的总数,一个transfer就是一个I/O,多个逻辑请求组合成一个对磁盘的I/O请求,一个transfer的大小不确定。

-rtps:每秒钟的物理读的总数

-wtps:每秒钟的物理写的总数

-bread/s:每秒钟从磁盘读取的数据总数

-bwrtn/s:每秒钟写入磁盘的数据的总数

四,sar -d 1 10

Linux 03/29/2009

12:38:56

AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svc tm %util

12:38:57 AM dev8-0

12:38:57 AM dev8-16

12:38:57 AM dev8-32

tps:每秒钟对磁盘发送transfer的总数,一个transfer就是一个I/O,多个逻辑请求组合成一个对磁盘的I/O请求,一个transfer的大小不确定

rd_sec/s

每秒钟读取的扇区数,每个扇区512 bytes.

wr_sec/s

每秒钟写入的扇区数,每个扇区512 bytes.

avgrq-sz

对磁盘请求的扇区的平均大小。

avgqu-sz

对磁盘请求的平均队列长度.

await

请求响应的平均时间(毫秒).包括在请求队列中的时间和响应消耗时间

svctm

对IO请求的服务时间.

%util

I/O请求占用的CPU时间百分比。

Linux命令----分析内存的瓶颈

为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache.前者针对磁盘块的读写,后者针对文件inode的读写.这些Cache有效缩短了I/O系统调用(比如read,write,getdents)的时间.

内存活动基本上可以用3个数字来量化:活动虚拟内存总量,交换(swapping)率和调页(paging)率.其中第一个数字表明内存的总需求量,后两个数字表示那些内存中有多少比例正处在使用之中.目标是减少内存活动或增加内存量,直到调页率保持在一个可以接受的水平上为止.

活动虚拟内存的总量(VM)=实际内存大小(size of real memory)(物理内存)+使用的交换空间大小(amount of swap space used)

当程序运行需要的内存大于物理内存时,UNIX系统采用了调页机制,即系统copy一些内存中的页面到磁盘上,腾出来空间供进程使用。

大多数系统可以忍受偶尔的调页,但是频繁的调页会使系统性能急剧下降。

UNIX内存管理:UNIX系统通过2种方法进行内存管理,“调页算法”,“交换技术”。

调页算法是将内存中最近不常使用的页面换到磁盘上,把常使用的页面(活动页面)保留在内存中供进程使用。

交换技术是系统将整个进程,而不是部分页面,全部换到磁盘上。正常情况下,系统会发生一些交换过程。

当内存严重不足时,系统会频繁使用调页和交换,这增加了磁盘I/O的负载。进一步降低了系统对作业的执行速度,即系统I/O资源问题又会影响到内存资源的分配。

Unix的虚拟内存

Unix的虚拟内存是一个十分复杂的子系统,它实现了进程间代码与数据共享机制的透明性,并能够分配比系统现有物理内存更多的内存,某些操作系统的虚存甚至能通过提供缓存功能影响到文件系统的性能,各种风格的UNIX的虚存的实现方式区别很大,但都离不开下面的4个概念。

1:实际内存

实际内存是指一个系统中实际存在的物理内存,称为RAM。实际内存是存储临时数据最快最有效的方式,因此必须尽可能地分配给应用程序,现在的RAM的形式有多种:SIMM、DIMM、Rambus、DDR等,很多RAM都可以使用纠错机制(ECC)。

2:交换空间

交换空间是专门用于临时存储内存的一块磁盘空间,通常在页面调度和交换进程数据时使用,通常推荐交换空间的大小应该是物理内存的二到四倍。

3:页面调度

页面调度是指从磁盘向内存传输数据,以及相反的过程,这个过程之所以被称为页面调度,是因为Unix内存被平均划分成大小相等的页面;通常页面大小为4KB 和8KB(在Solaris中可以用pagesize命令查看)。当可执行程序开始运行时,它的映象会一页一页地从磁盘中换入,与此类似,当某些内存在一段时间内空闲,就可以把它们换出到交换空间中,这样就可以把空闲的RAM交给其他需要它的程序使用。

4:交换

页面调度通常容易和交换的概念混淆,页面调度是指把一个进程所占内存的空闲部分传输到磁盘上,而交换是指当系统中实际的内存已不够满足新的分配需求时,把整个进程传输到磁盘上,交换活动通常意味着内存不足。

[root@localhost ~]# vmstat -n 3 (每个3秒刷新一次)

procs-----------memory--------------------swap------io---- --system---- ------cpu--------

r b swpd free buff cache si so bi bo in cs us sy id wa

1 0 144 186164 105252

2386848 0 0 18 166 83 2 48 21 31 0

2 0 144 189620 105252 2386848 0 0 0 177 1039

1210 34 10 56 0

0 0 144 214324 105252

2386848 0 0 0 10 1071 670 32 5 63 0

0 0 144 202212 105252

2386848 0 0 0 189 1035 558 20 3 77 0

2 0 144 158772 105252 2386848 0 0 0 20

3 1065

2832 70 14 15 0

MEMORY

-swap:切换到交换内存上的内存(默认以KB为单位)

如果SWAP的值不为0,或者还比较大,比如超过100M了,但是SI,SO的值长期为0,这种情况我们可以不用担心,不会影响系统性能。-free:空闲的物理内存

- buff:作为buffer cache的内存,对块设备的读写进行缓冲

-cache:作为page cache的内存,文件系统的cache

如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。

SWAP

-si:交换内存使用,由磁盘调入内存

-so:交换内存使用,由内存调入磁盘

内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。

我发现有些朋友看到空闲内存(FREE)很少的或接近于0时,就认为内存不够用了,实际上不能光看这一点,Linux是抢占内存式的OS,还要结合si,so,如果free 很少,但是si,so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

Linux命令----分析CPU的瓶颈

衡量CPU性能的指标:

1,用户使用CPU的情况;

CPU运行常规用户进程

CPU运行niced process

CPU运行实时进程

2,系统使用CPU情况;

用于I/O管理:中断和驱动

用于内存管理:页面交换

用户进程管理:进程开始和上下文切换

3,WIO:用于进程等待磁盘I/O而使CPU处于空闲状态的比率。

4,CPU的空闲率,除了上面的WIO以外的空闲时间

5,CPU用于上下文交换的比率

6,nice

7,real-time

8,运行进程队列的长度

9,平均负载

Linux中常用的监控CPU整体性能的工具有:

mpstat:mpstat 不但能查看所有CPU的平均信息,还能查看指定CPU的信息。vmstat:只能查看所有CPU的平均信息;查看cpu队列信息;

iostat: 只能查看所有CPU的平均信息。

sar:与mpstat 一样,不但能查看CPU的平均信息,还能查看指定CPU的信息。

top:显示的信息同ps接近,但是top可以了解到CPU消耗,可以根据用户指定的时间来更新显示。

下面一一介绍:

一,vmstat

[root@localhost ~]#vmstat -n 3 (每个3秒刷新一次)

procs-----------memory--------------------swap-- ----io---- --system---- ------cpu--------

r

b swpd free buff cache si so bi bo in cs

us sy id wa

10 144 186164 105252

2386848 0 0 18 166 83 2 48 21 31 0

20 144 189620 105252 2386848 0 0 0 177 1039

1210 34 10 56 0

00 144 214324 105252

2386848 0 0 0 10 1071 670 32 5 63 0

00 144 202212 105252

2386848 0 0 0 189 1035 558 20 3 77 0

20 144 158772 105252 2386848 0 0 0 203 1065

2832 70 14 15 0

红色内容标示CPU相关的参数PROC(ESSES)

--r:如果在processes中运行的序列(process r)是连续的大于在系统中的CPU的个数表示系统现在运行比较慢,有多数的进程等待CPU.

如果r的输出数大于系统中可用CPU个数的4倍的话,则系统面临着CPU短缺的问题,或者是CPU的速率过低,系统中有多数的进程在等待CPU,造成系统中进程运行过慢.

SYSTEM

--in:每秒产生的中断次数

--cs:每秒产生的上下文切换次数

上面2个值越大,会看到由内核消耗的CPU时间会越大

CPU

-us:用户进程消耗的CPU时间百分

us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速(比如PHP/PERL)

-sy:内核进程消耗的CPU时间百分比(sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因)

-wa:IO等待消耗的CPU时间百分比

wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

-id:CPU处于空闲状态时间百分比,如果空闲时间(cpu id)持续为0并且系统时间(cpu sy)是用户时间的两倍(cpu us) 系统则面临着CPU资源的短缺.

解决办法:

当发生以上问题的时候请先调整应用程序对CPU的占用情况.使得应用程序能够更有效的使用CPU.同时可以考虑增加更多的CPU. 关于CPU的使用情况还可以结合mpstat, ps aux top prstat a等等一些相应的命令来综合考虑关于具体的CPU的使用情况,和那些进程在占用大量的CPU时间.一般情况下,应用程序的问题会比较大一些.比如一些SQL语句不合理等等都会造成这样的现象.

二,sar

sar [options] [-A] [-o file] t [n]

在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有

的参数,n为采样次数,是可选的,默认值是1,-o file表示将命令结果以二进制格式

存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项,sar 命令

的选项很多,下面只列出常用选项:

-A:所有报告的总和。

-u:CPU利用率

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

-d:硬盘使用报告。

-r:内存和交换空间的使用统计。

-g:串口I/O的情况。

-b:缓冲区使用情况。

-a:文件读写情况。

-c:系统调用情况。

-q:报告队列长度和系统平均负载

-R:进程的活动情况。

-y:终端设备活动情况。

-w:系统交换活动。

-x { pid | SELF | ALL }:报告指定进程ID的统计信息,SELF关键字是sar进程本身的统计,ALL关键字是所有系统进程的统计。

用sar进行CPU利用率的分析

#sar -u 2 10

Linux 03/28/2009

07:40:17

PM CPU %user %nice %system %iowait %steal %idle 07:40:19 PM all

07:40:21 PM all

07:40:23 PM all

07:40:25 PM all

07:40:27 PM all

07:40:29 PM all

07:40:31 PM all

07:40:33 PM all

07:40:35 PM all

07:40:37 PM all

Average: all

在显示内容包括:

%user:CPU处在用户模式下的时间百分比。

%nice:CPU处在带NICE值的用户模式下的时间百分比。

%system:CPU处在系统模式下的时间百分比。

%iowait:CPU等待输入输出完成时间的百分比。

%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。

%idle:CPU空闲时间百分比。

在所有的显示中,我们应主要注意%iowait和%idle,%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

用sar进行运行进程队列长度分析:

#sar -q 2 10

Linux 03/28/2009

07:58:14 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15

07:58:16 PM 0 493

07:58:18 PM 1 491

07:58:20 PM 1 488

07:58:22 PM 0 487

07:58:24 PM 0 485

07:58:26 PM 1 483

07:58:28 PM 0 481

07:58:30 PM 1 480

07:58:32 PM 0 477

07:58:34 PM 0 474

Average: 0 484

runq-sz 准备运行的进程运行队列。

plist-sz 进程队列里的进程和线程的数量

ldavg-1 前一分钟的系统平均负载(load average)

ldavg-5 前五分钟的系统平均负载(load average)

ldavg-15 前15分钟的系统平均负载(load average)

顺便说一下load avarage的含义

load average可以理解为[size=+0]每秒钟CPU等待运行的进程个数.

在Linux系统中,sar -q、uptime、w、top等命令都会有系统平均负载load average 的输出,那么什么是系统平均负载呢

系统平均负载被定义为在特定时间间隔内运行队列中的平均任务数。如果一个进程满足以下条件则其就会位于运行队列中:

- 它没有在等待I/O操作的结果

- 它没有主动进入等待状态(也就是没有调用'wait')

- 没有被停止(例如:等待终止)

例如:

# uptime

20:55:40 up 24 days, 3:06, 1 user, load average: , ,

命令输出的最后内容表示在过去的1、5、15分钟内运行队列中的平均进程数量。

一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如果每个CPU的任务数大于5,那么就表示这台机器的性能有严重问题。对于上面的例子来说,假设系统有两个CPU,那么其每个CPU的当前任务数为:2=。这表示该系统的性能是可以接受的。

三,iostat

#iostat -c 2 10

Linux 03/28/2009

avg-cpu: %user %nice %system %iowait %steal %idle

avg-cpu: %user %nice %system %iowait %steal %idle

avg-cpu: %user %nice %system %iowait %steal %idle

四,mpstat

mpstat是Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU 的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。下面只介绍mpstat与CPU相关的参数,mpstat的语法如下:

mpstat [-P {|ALL}] [internal [count]]

参数的含义如下:

参数解释

-P {|ALL} 表示监控哪个CPU,cpu在[0,cpu个数-1]中取值

internal 相邻的两次采样的间隔时间

count 采样的次数,count只能和delay一起使用

当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval 时间段的平均信息。与CPU有关的输出的含义如下:

参数解释从/proc/stat获得数据

CPU 处理器ID

user 在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程usr/total*100

nice 在internal时间段里,nice值为负进程的CPU时间(%)nice/total*100 system 在internal时间段里,核心时间(%)system/total*100

iowait 在internal时间段里,硬盘IO等待时间(%)iowait/total*100

irq 在internal时间段里,软中断时间(%)irq/total*100

soft 在internal时间段里,软中断时间(%)softirq/total*100

idle 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%)idle/total*100

intr/s 在internal时间段里,每秒CPU接收的中断的次数intr/total*100

CPU总的工作时间=total_cur=user+system+nice+idle+iowait+irq+softirq

total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq+

pre_softirq

user=user_cur user_pre

total=total_cur-total_pre

其中_cur 表示当前值,_pre表示interval时间前的值。上表中的所有值可取到两位小数点。#mpstat -P ALL 2 10

Linux 03/28/2009

10:07:57

PM CPU %user %nice %sys %iowait %irq %soft %steal %idle int r/s

10:07:59 PM all

10:07:59 PM 0

10:07:59 PM 1

如何优化linux系

01)不用root ,添加普通用户,通过sudo授权管理。

02)更改默认的远程连接SSH服务端口及禁止root用户远程连接。03)定时自动更新服务器时间。

04)配置yum更新源,从国内更新源下载安装rpm包。

05)关闭selinux及iptable(IPtable工作场景如果有wan ip一般要打开,高并发除外)。

06)调整文件描述符的数量。进程及文件的打开都会消耗文件描述符。07)定时自动清理/var/spool/clientmquene/目录垃圾文件,防止inode s节点被占满。

08)精简开机自启动服务(crond,sshd,network,rsyslog)。

09)linux内核参数优化/etc/ ,执行sysctl -p生效。

10)更改字符集,支持中文,但建议还是使用英文字符集,防止乱码问题,不要使用中文。

11)锁定关键系统文件。

chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/ini ttab

处理以上内容后把改名oldboy ,这样就安全多了。

12)清空/etc/issue,去除系统及内核版本登录前的屏幕显示。

13)清除无用的默认系统账户或组。

Linux服务器内核参数优化

= 4000 65000

= 16384

= 36000

= 100

= 1

= 1

= 16384

= 16384

= 16384

EOF

sysctl -p

将上面的内核参数加入/etc/文件中,执行如下命令使之生效:

sysctl -p

内核文件中常用参数含义:

表示套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间,默认值是60秒。

该参数对应系统路径为:/proc/sys/net/ipv4/tcp_fin_timeout 60

表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认值为0,表示关闭。

该参数对应系统路径为:/proc/sys/net/ipv4/tcp_tw_reuse 0

表示开启TCP连接中TIME-WAIT sockets的快速回收。

该参数对应系统路径为:/proc/sys/net/ipv4/tcp_tw_recycle,默认为0,表示关闭。

提示:reuse和recycle这两个参数是为防止生产环境下Web、Squid等业务服务器time_wait网络状态数量过多设置的。

表示开启SYN Cookies功能。当出现SYN等待队列溢出时,启用Cookies来处理,可防范少量SYN攻击,这个参数也可以不添加。

该参数对应系统路径为:/proc/sys/net/ipv4/tcp_syncookies,默认值为1

表示当keepalive启用时,TCP发送keepalive消息的频度。默认是2小时,建议改为10分钟。

该参数对应系统路径为:/proc/sys/net/ipv4/tcp_keepalive_time,默认为7200秒。

该选项用来设定允许系统打开的端口范围,即用于向外连接的端口范围。

该参数对应系统路径为:/proc/sys/net/ipv4/ip_local_port_range 32768 61000

表示SYN队列的长度,默认为1024,建议加大队列的长度为8192或更多,这样可以容纳更多等待连接的网络连接数。

该参数为服务器端用于记录那些尚未收到客户端确认信息的连接请求最大值。

该参数对象系统路径为:/proc/sys/net/ipv4/tcp_max_syn_backlog

表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数值,TIME_WAIT 套接字将立刻被清除并打印警告信息。

默认为180000,对于Apache、Nginx等服务器来说可以将其调低一点,如改为5000~30000,不通业务的服务器也可以给大一点,比如LVS、Squid。

此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

该参数对应系统路径为:/proc/sys/net/ipv4/tcp_max_tw_buckets

参数的值决定了内核放弃连接之前发送SYN+ACK包的数量。

该参数对应系统路径为:/proc/sys/net/ipv4/tcp_synack_retries,默认值为5

表示在内核放弃建立连接之前发送SYN包的数量。

该参数对应系统路径为:/proc/sys/net/ipv4/tcp_syn_retries 5

用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。

如果超过这个数值,孤立连接将被立即被复位并打印出警告信息。

这个限制只有为了防止简单的DoS攻击。不能过分依靠这个限制甚至认为减少这个值,更多的情况是增加这个值。

该参数对应系统路径为:/proc/sys/net/ipv4/tcp_max_orphans 65536

该选项默认值是128,这个参数用于调节系统同时发起的TCP连接数,在高并发的请求中,默认的值可能会导致链接超时或重传,因此,需要结合并发请求数来调节此值。

该参数对应系统路径为:/proc/sys/net/core/somaxconn 128

表示当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包最大数。

该参数对应系统路径为:/proc/sys/net/core/netdev_max_backlog,默认值为1000通过调试系统内核参数使系统性能最大化

如:最大并发数(ab –n 10000 –c 100 -a 查看所有系统变量

-n:打印值时不打印关键字;

-e:忽略未知关键字错误;

-N:仅打印名称;

-w:当改变sysctl设置时使用此项;

-p:从配置文件“/etc/”加载内核参数设置;

-a:打印当前所有可用的内核参数变量和值;

-A:以表格方式打印当前所有可用的内核参数变量和值。

/proc/sys下内核文件与配置文件中变量存在着对应关系配置说明

#最大的待发送TCP数据缓冲区空间

#最大的接受TCP缓冲区空间

#最大的接受UDP缓冲区大小

#最大的发送UDP数据缓冲区大小

linux系统故障与分析

由于管理员忘记密码,或者由于系统受到黑客的入侵,系统密码文件被修改。导致管理员可能无法用帐号登录系统。 解决方法: 方法一,在系统启动时,进入单用户模式(linux single),然后用passwd命令重新设置密码,或修改密码文件即可恢复正常。 方法二,用急救启动盘组启动系统,然后将硬盘的文件系统安装到/mnt目录下,编辑/mnt/etc/passwd文件进行恢复。 方法三、将安装系统的硬盘拆下来,放在另一个Linux系统中,然后(mount)挂载此硬盘的系统安装区,将次硬盘分区中的/etc/passwd, /etc/shadow,/etc/group文件覆盖或修改,也可以恢复。 案例二:硬盘扇区错乱 在启动过程中最容易遇到的问题就是硬盘可能有坏道或扇区错乱(数据损坏)的情况,这种情况多由于异常断电、不正常关机导致。此种问题发生,在系统启动的时候,屏幕会显示: Press root password or ctrl+D:此时输入root密码系统自动进入单用户模式,输入“fsck -y /dev/hda6”(fsck为文件系统检测修复命令,“-y”设定检测到错误自动修复,/dev/hda6为发生错误的硬盘分区,请依据具体情况更改此参数),系统修复完成后,用命令“reboot”重新启动即可。 案例三、GRUB选项设置错误 “Error 15”显示系统无法找到grub.conf中指定的内核。 GRUB引导错误信息,我们观察发现因为打字错误,内核文件的“vmlinuz”打成了“vmlinux”,所以系统无法找到内核的可执行文件。我们可以按任意键回到GRUB编辑界面,修改此错误,回车保存后按“b”键即可正常引导,当然不要忘记进入系统后修改grub.conf文件中此处错误。这是很多初学Linux的用户在修改GRUB设置时很容易犯的错误,出现此黑屏提示时注意观察报错信息,即可针对性修复。 (二)GRUB引导故障排除 我发现有时Linux启动后会直接进入GRUB命令行界面(只有“grub>”提示符),此时很多用户就选择了重新安装GRUB甚至重新安装系统。其实一般而言此故障的原因最常见的有两个:一是GRUB配置文件中选项设置错误;二是GRUB配置文件丢失(还有少数原因,如内核文件或镜像文件损坏、丢失,/boot目录误删除等),如果是第一种情况,可以首先通过GRUB命令引导系统后修复;若是第二种情况,则要使用Linux救援模式修复了(本文后续有描述)。

系统性能优化方案

系统性能优化方案 (第一章) 系统在用户使用一段时间后(1年以上),均存在系统性能(操作、查询、分析)逐渐下降趋势,有些用户的系统性能下降的速度非常快。同时随着目前我们对数据库分库技术的不断探讨,在实际用户的生产环境,现有系统在性能上的不断下降已经非常严重的影响了实际的用户使用,对我公司在行业用户内也带来了不利的影响。 通过对现有系统的跟踪分析与调整,我们对现有系统的性能主要总结了以下几个瓶颈: 1、数据库连接方式问题 古典C/S连接方式对数据库连接资源的争夺对DBServer带来了极大的压力。现代B/S连接方式虽然不同程度上缓解了连接资源的压力,但是由于没有进行数据库连接池的管理,在某种程度上,随着应用服务器的不断扩大和用户数量增加,连接的数量也会不断上升而无截止。 此问题在所有系统中存在。 2、系统应用方式(架构)问题(应用程序设计的优化) 在业务系统中,随着业务流程的不断增加,业务控制不断深入,分析统计、决策支持的需求不断提高,我们现有的业务流程处理没有针对现有的应用特点进行合理的应用结构设计,例如在‘订单、提油单’、‘单据、日报、帐务的处理’关系上,单纯的数据关系已经难以承载多元的业务应用需求。 3、数据库设计问题(指定类型SQL语句的优化)

目前在系统开发过程中,数据库设计由开发人员承担,由于缺乏专业的数据库设计角色、单个功能在整个系统中的定位模糊等原因,未对系统的数据库进行整体的分析与性能设计,仅仅实现了简单的数据存储与展示,随着用户数据量的不断增加,系统性能逐渐下降。 4、数据库管理与研究问题(数据存储、物理存储和逻辑存储的优化) 随着系统的不断增大,数据库管理员(DBA)的角色未建立,整个系统的数据库开发存在非常大的随意性,而且在数据库自身技术的研究、硬件配置的研究等方面未开展,导致系统硬件、系统软件两方面在数据库管理维护、研究上无充分认可、成熟的技术支持。 5、网络通信因素的问题 随着VPN应用技术的不断推广,在远程数据库应用技术上,我们在实际设计、开发上未充分的考虑网络因素,在数据传输量上的不断加大,传统的开发技术和设计方法已经无法承载新的业务应用需求。 针对以上问题,我们进行了以下几个方面的尝试: 1、修改应用技术模式 2、建立历史数据库 3、利用数据库索引技术 4、利用数据库分区技术 通过尝试效果明显,仅供参考!

linux_操作系统优化方案

按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能。下边将分四部分介绍在Red Hat Enterprise Linux AS和SUSE LINUX Enterprise Server系统下,如何用以下几种技巧进行性能的优化: 1、Disabling daemons (关闭daemons) 2、Shutting down the GUI (关闭GUI) 3、C hanging kernel parameters (改变内核参数) 4、Kernel parameters (内核参数) 5、Tuning the processor subsystem(处理器子系统调优) 6、Tuning the memory subsystem (内存子系统调优) 7、Tuning the file system(文件系统子系统调优) 8、Tuning the network subsystem(网络子系统调优) 1 关闭daemons 有些运行在服务器中的daemons (后台服务),并不是完全必要的。关闭这些daemons可释放更多的内存、减少启动时间并减少C PU处理的进程数。减少daemons数量的同时也增强了服务器的安全性。缺省情况下,多数服务器都可以安全地停掉几个daemons。 Table 10-1列出了Red Hat Enterprise Linux AS下的可调整进程. Table 10-2列出了SUSE LINUX Enterprise Server下的可调整进程

注意:关闭xfs daemon将导致不能启动X,因此只有在不需要启动GUI图形的时候才可以关闭xfs daemon。使用startx 命令前,开启xfs daemon,恢复正常启动X。 可以根据需要停止某个进程,如要停止sendmail 进程,输入如下命令: Red Hat: /sbin/service sendmail stop SUSE LINUX: /etc/init.d/sendmail stop 也可以配置在下次启动的时候不自动启动某个进程,还是send mail: Red Hat: /sbin/chkconfig sendmail off SUSE LINUX: /sbin/chkconfig -s sendmail off 除此之外,LINUX还提供了图形方式下的进程管理功能。对于Red Hat,启动GUI,使用如下命令:/usr/bin/redhat-config-serv ices 或者鼠标点击M ain M enu -> System Settings -> Serv er Settings -> Serv ices.

性能测试报告-模板

Xxx系统性能测试报告 拟制:****日期:****审核:日期: 批准:日期:

1.概述 1.1.编写目的 本次测试报告为xxx系统的性能测试总结报告,目的在于总结性能测试工作,并分析测试结果,描述系统是否符合xxx系统的性能需求。 预期参考人员包括用户、测试人员、开发人员、项目管理者、质量管理人员和需要阅读本报告的高层经理。 1.2.项目背景 腾讯公司为员工提供一个网上查询班车的入口,分析出哪些路线/站点比较紧张或宽松,以进行一些合理调配。 1.3.测试目标 (简要列出进行本次压力测试的主要目标)完善班车管理系统,满足腾讯内部员工的班车查询需求,满足500个用户并发访问本系统。 1.4.名词解释 测试时间:一轮测试从开始到结束所使用的时间 并发线程数:测试时同时访问被测系统的线程数。注意,由于测试过程中,每个线程都是以尽可能快的速度发请求,与实际用户的使用有极大差别,所以,此数据不等同于实际使用时的并发用户数。 每次时间间隔:测试线程发出一个请求,并得到被测系统的响应后,间隔多少时间发出下一次请求。 平均响应时间:测试线程向被测系统发请求,所有请求的响应时间的平均值。 处理能力:在某一特定环境下,系统处理请求的速度。 cache影响系数:测试数据未必如实际使用时分散,cache在测试过程中会比实际使用时发挥更大作用,从而使测试出的最高处理能力偏高,考虑到这个因素而引入的系数。 用户习惯操作频率:根据用户使用习惯估算出来的,单个用户在一段时间内,使用此类功能的次数。通常以一天内某段固定的高峰使用时间来统计,如果一天内没有哪段时间是固定的高峰使用时间,则以一天的工作时间来统计。

LINUX性能调优方法总结

LINUX性能调优方法总结 大多数 Linux 发布版都定义了适当的缓冲区和其他 Transmission Control Protocol(TCP)参数。可以修改这些参数来分配更多的内存,从而改进网络 性能。设置内核参数的方法是通过 proc 接口,也就是通过读写 /proc 中的值。幸运的是,sysctl 可以读取 /etc/sysctl.conf 中的值并根据需要填充 /proc,这样就能够更轻松地管理这些参数。清单 2 展示在互联网服务器上应用于 Internet 服务器的一些比较激进的网络设置。 # Use TCP syncookies when needed net.ipv4.tcp_syncookies = 1 # Enable TCP window scaling net.ipv4.tcp_window_scaling: = 1 # Increase TCP max buffer size net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 # Increase Linux autotuning TCP buffer limits net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 # Increase number of ports available net.ipv4.ip_local_port_range = 1024 65000 将这些设置添加到 /etc/sysctl.conf 的现有内容中。第一个设置启用TCP SYN cookie。当从客户机发来新的 TCP 连接时,数据包设置了 SYN 位,服务 器就为这个半开的连接创建一个条目,并用一个 SYN-ACK 数据包进行响应。在正常操作中,远程客户机用一个 ACK 数据包进行响应,这会使半开的连接 转换为全开的。有一种称为 SYN 泛滥(SYN flood)的网络攻击,它使 ACK 数据包无法返回,导致服务器用光内存空间,无法处理到来的连接。SYN cookie 特性可以识别出这种情况,并使用一种优雅的方法保留队列中的空间(细节参见参考资料一节)。大多数系统都默认启用这个特性,但是确保配 置这个特性更可靠。 启用 TCP 窗口伸缩使客户机能够以更高的速度下载数据。TCP 允许在未从远程端收到确认的情况下发送多个数据包,默认设置是最多 64 KB,在与延迟比 较大的远程客户机进行通信时这个设置可能不够。窗口伸缩会在头中启用更多的位,从而增加窗口大小。 后面四个配置项增加 TCP 发送和接收缓冲区。这使应用程序可以更快地丢掉它的数据,从而为另一个请求服务。还可以强化远程客户机在服务器繁忙时发

PC性能评测实验报告

计算机体系结构课程实验报告 PC性能测试实验报告 学号: 姓名:张俊阳 班级:计科1302 题目1:PC性能测试软件 请在网上搜索并下载一个PC机性能评测软件(比如:可在百度上输入“PC 性能benchmark”,进行搜索并下载,安装),并对你自己的电脑和机房电脑的性能进行测试。并加以比较。 实验过程及结果: 我的电脑:

机房电脑:

综上分析:分析pcbenchmark所得数据为电脑的current performance与其potential performance的比值,值大表明计算机目前运行良好,性能好,由测试结果数据可得比较出机房的电脑当前运行的性能更好。分析鲁大师性能测试结果:我的电脑得分148588机房电脑得分71298,通过分析我们可以得出CPU占总得分的比重最大,表明了其对计算机性能的影响是最大的,其次显卡性能和内存性能也很关键,另外机房的电脑显卡性能较弱,所以拉低了整体得分,我的电脑各项得分均超过机房电脑,可以得出我的电脑性能更好的结论。 题目2:toy benchmark的编写并测试 可用C语言编写一个程序(10-100行语句),该程序包括两个部分,一个部分主要执行整数操作,另一个部分主要执行浮点操作,两个部分执行的频率(频率整数,频率浮点)可调整。请在你的计算机或者在机房计算机上,以(,),(,),(,)的频率运行你编写的程序,并算出三种情况下的加权平均运行时间。 实验过程及结果: #include<> #include<> int main() {

int x, y, a; double b; clock_t start, end; printf("请输入整数运算与浮点数运算次数(单位亿次)\n"); scanf("%d%d", &x, &y); /*控制运行频率*/ start = clock(); for (int i = 0; i

Linux常见死机原因分析介绍

Linux常见死机原因分析介绍 宕机,指操作系统无法从一个严重系统错误中恢复过来,或系统硬件层面出问题,以致系统长时间无响应,而不得不重新启动计算机的现象。Linux系统也一样。不过原因有所不同。在排除了硬件故障/firmware版本/BIOS等等问题之外,Linux死机通常可能碰到如下几种情况 方法步骤 1,如果你的Linux死机的时候控制台上有乱七八糟的字符。恭喜你,这种情况叫做oops. 通常是Linux kernel认为自己发生了异常造成的。 可以通过oops消息查找出错的地方。 2,如果你的机器僵死,那么问题麻烦了。这种时候,通常是Kernel出现了死锁。Kernel不会知道自己死锁了,所以不会在屏幕上显示任何咚咚。

如果运气好,此时Kernel也许可能能够响应中断。不管怎样,你都无法进一步操作了。 3,严格来说,这第三种情况不算死机,现象如下:输入命令回车之后命令不能返回任何结果,但是控制台对回车可能有相应。但是命令无法结束,也不会有输出结果。 但是可以换到下一个控制台,而且还可以继续输入命令,但是输入命令之后还是没有输出。这种情况会有很多可能。通常是应用程序的系统调用长时间没有返回或者是满足不了应用的要求。 以上三种情况,system log的作用都不大。通常日志都不会纪录。所以只能使用Kernel的Debug工具。 补充:预防死机的小技巧 1、不要在同个硬盘安装多个操作系统 2、不要一次性打开多个网页浏览 3、在关闭电脑时,不要直接按电源按钮,否则会导致文件

丢失,下次使用不能正常开机导致死机 4、别让CPU、显卡超频,电脑温度过高 5、及时清理机箱内的灰尘 6、更换电脑硬件配置时,一定要插牢固 7、不要使用来历不明的软件和光盘,以免传染病毒 8、对系统文件或重要文件,最好使用隐含属性,以免因误操作而删除或覆盖这些文件 9、在安装应用软件时,若提示是否覆盖当前文件,一定不要覆盖,通常当前的系统文件是最好的 10、在运行大型应用软件时,不要在运行状态下退出以前运行的程序,否则会引起整个Windows崩溃 相关阅读:死机宕机实例介绍 自2015年3月11日下午5点起,据苹果用户反应

软件开发系统性能测试报告

订单系统二期_Order接口 性能测试报告

目录 1.术语 (3) 2.测试环境 (3) 2.1服务器&客户端环境信息 (3) 3.测试场景 (4) 4.测试目的&策略 (5) 5.结果分析 (5) 5.1基本数据统计分析&对比 (5) 5.1.1.测试场景PT1 (5) 5.1.2.测试场景PT2 (5) 5.1.3.测试场景PT3 (6) 5.2.详细数据分析 (6) 5.2.1.测试场景PT1(getOrderList Interface) (6) 5.2.2.测试场景PT2(getOrderRow Interface) (9) 5.2.3.测试场景PT3(getOrderGoodsList) (14) 6.测试结论 (17)

1.术语 2.测试环境 2.1服务器&客户端环境信息 服务端配置: 10.19.141.57 应用服务器: CPU: Intel(R) Xeon(R) CPUE5620 @ 2.40GHz 8个逻辑CPU 内存:15GB 网卡: 1000M 操作系统: CentOS release 5.8 (Final) 辅助软件: nmon 10.19.141.58 数据库服务器: CPU: Intel(R) Xeon(R) CPUE5620 @ 2.40GHz 8个逻辑CPU 内存:8GB 网卡: 1000M 操作系统: CentOS release 5.8 (Final) 辅助软件: nmon 客户端配置:(2台) CPU:4核8线程Intel(R) Xeon(R) CPU E5620 @ 2.40GHz 内存:8.00GB 网卡: 1000M 操作系统: Windows2008 浏览器/版本号: IE9.0 测试工具: LoadRunner11.0、nmon

Linux 常见故障诊断说明

Q:Linux 常见故障诊断说明 A:对大多数用户来说,由于 Linux 操作系统的易用性和 Windows 操作系统相比较起来还是存在一定差别的。在 Windows 操作系统下,如果系统发生一些故障或问题的时候,我们经常会用一些补救的措施来进行故障的排除,这些方法很多,而且简单易用。但是,这种在Linux操作系统进行故障排除的工作却要复杂一些,而且故障的发现不像在Windows操作系统那样可以及时预见,需要手工运行一些系统和网络的管理命令。下面,就对系统和网络两种类型在Linux操作系统中的常见故障诊断进行说明。 系统故障诊断 1.启动故障 这是在Linux操作系统中经常会遇到的问题。系统不能启动的原因主要有:在安装Linux 操作系统的过程中,LILO配置信息错误,导致安装完毕后,系统不能正常启动;重新安装其他的操作系统,也经常会导致原有的Linux不能启动。因为,这些新安装的操作系统默认为计算机中没有其他的操作系统,因而改写了硬盘的主引导记录(MBR),覆盖了Linux操作系统中的LILO系统引导程序,致使最后无法启动LILO;在操作linux操作系统过程中,由于运行错误的Linux命令,使系统重新启动时,出现异常。 解决方法: 如果在Linux操作系统安装过程中或安装过程后,制作了Linux系统的急救启动盘组,使用这些急救盘启动系统即可进入系统,然后对相应错误,进行配置即可解决问题;如果没有制作急救启动盘组,Linux系统不能启动,该怎么办呢?下面介绍三种解决方法: (1)进入Linux操作系统单用户模式,在boot提示符后,敲入:linux single,此模式下启动Linux,LILO配置和网络配置信息不加载在启动过程中。 (2)光盘启动,用第一张安装Linux操作系统的光盘(启动光盘)启动硬盘的Linux系统,主板BIOS里要设置光盘启动,重启机器后,出现 boot: 提示符后键入: vmlinuz root=/dev/linuxrootpartition noinitrd 其中,root=后面填入您的Linux root分区的分区号,也就是Linux系统的root文件系统所在的硬盘分区位置,例如:vmlinuz root=/dev/hda3 noinitrd。回车之后,即可进Linux系统。如果想恢复被破坏的LILO系统引导程序,可以编辑/etc/lilo.conf 之后, 运行/sbin/lilo即可。这种方法也适合其它原因对Linux操作系统造成的破坏。(注:软盘启动操作系统的过程也同上)。 (3)在DOS下运行loadlin程序启动系统。在个人计算机使用 Linux系统时,通常都是Linux和Windows 9x或Windows 2000并存的。如果知道Linux系统在硬盘上的确切安装分区,并且有loadlin程序(在 Red Hat Linux 光盘的 dosutil目录下就有这个程序),也可以启动Linux系统。loadlin是DOS系统下的程序,运行它可以从DOS系统下直接启动Linux系统,快速进入Linux环境。除loadlin程序之外,还需要一个 Linux启动内核的映像文件vmlinuz,在 Red Hat linux光盘的 images目录下有这个文件。例如,如果在Windows 2000系统下面,进入DOS的命令模式,然后运行下述的loadlin命令,即可重新进入Linux系统: loadlin vmlinuz root=/dev/linuxrootpartition 命令执行后,就开始引导Linux系统。用root身份登录后,编辑/etc/lilo.conf 之后,运行/sbin/lilo即可,这样操作后则重新将LILO系统引导程序装入MBR。 2.文件系统故障

linux中的weblogic性能调优

Linux中的Weblogic性能测试调整 一.操作系统参数调整 1.linux TCP连接数调整 通过命令:ulimit –n 查看当前最大TCP连接数,这表示当前用户的每个 进程最多允许同时打开多少个文件。一般系统默认为1024,在并发量大 的情况下肯定不够用。 修改此限制的最简单办法:ulimit –n 设置单一进程允许打开 的最大文件数。如果系统回显类似于“Operation not permitted”之类的话,说明修改失败,需要修改系统对该用户打开文件数的软限制或硬限制。 修改软限制或硬限制: 修改/etc/security/limits.conf文件,在文件中添加如下行: * soft nofile 10240 * hard nofile 10240 表示修改所有用户的限制,也可以用指定用户名替代。 修改/etc/pam.d/login文件,在文件中添加如下行: session required /lib/security/pam_limits.so 查看Linux系统级的最大打开文件数限制:cat /proc/sys/fs/file-max 2.修改网络内核对TCP连接的有关限制 端口范围: 修改/etc/sysctl.conf文件,在文件中添加如下行: net.ipv4.ip_local_port_range = 1024 65535 另外,有时无法建立TCP连接的原因可能是因为Linux网络内核的IP_TABLE防火 墙对最大跟踪的TCP连接数有限制 修改/etc/sysctl.conf文件,在文件中添加如下行:net.ipv4.ip_conntrack_max = 10240 这表明将系统对最大跟踪的TCP连接数限制设置为10240。请注意,此限制值要尽 量小,以节省对内核内存的占用。 3.其他参数调整 在/etc/sysctl.conf文件中增加如下参数,进行系统参数调整 net.core.rmem_default=128388607 默认的TCP数据接收缓冲 net.core.wmem_default=128388607 默认的TCP数据发送缓冲 net.core.rmem_max=128388607 net.core.wmem_max=128388607

软件系统项目可行性分析报告

软件系统项目可行性分 析报告 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

软件系统项目 可行性分析报告 ****年**月

目录

1.项目概述 1.1.项目背景 (一般从国家、省、市、地方顺序写政策背景,如果行业背景可以分项目写,如移动互联网用户数、微信用户数、电子商务用户数等) 1.2.项目范围 (一段总述后,分点概况项目建设的范围,如果有配置网络建设、设备采购也需要说明) 1.3.编制依据 (与项目相关的各级政府政策文件) 1.4.技术规范与标准 (与项目相关的行业技术标准) 2.项目目标与必要性 2.1.项目目的与意义 (响应*****,进一步推进****,重大现实意义***,打造*****需要 *****,全面实现*****) 2.2.项目必要性 (****客观需要、****现实要求、****重要举措、****重要抓手、****文件要求) 3.现状与项目需求 3.1.项目现状 (写清楚项目的建设基础、政策实施基础、网络基础、软件基础、用户使用基础等)

也可分析存在问题 3.2.需求分析 3.2.1.业务需求分析 (划业务流程图,并说明) 3.2.2.数据需求分析 (划数据流图,并说明) 3.2.3.功能需求分析 (罗列子系统、子平台、模块功能需求) 3.2. 4.性能需求分析 (罗列实用性、易用性、先进性、成熟性、可扩展性、经济性、可管理性等需求) 3.2.5.安全需求分析 (说明项目在安全方面的需求分析,包括存储、传输、身份认证、服务器等) 3.2.6.其它需求分析 (项目中如果涉及非功能性也非性能的需求,则写在这里,如派人驻点服务、数据扫描服务、数据录入服务等等) 4.项目总体设计 4.1.设计原则 (如实用性、可扩展性、安全性、先进性等) 4.2.总体框架 (技术、数据、功能、安全框架,画框架图并说明)

(整理)linux系统监控性能评估.

总控服务器性能: 一、Cpu性能评估 Vmstat命令的参数解释: 对上面每项的输出解释如下: procs r列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,说明CPU 不足,需要增加CPU。? b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。 Memory swpd列表示切换到内存交换区的内存数量(以k为单位)。如果swpd的值不为0,或者比较大,只要si、so的值长期为0,这种情况下一般不用担心,不会影响系统性能。 free列表示当前空闲的物理内存数量(以k为单位)? buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲。 cache列表示page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached,如果cache值较大,说明cached的文件数较多,如果此时IO中bi比较小,说明文件系统效率比较好。 swap si列表示由磁盘调入内存,也就是内存进入内存交换区的数量。 so列表示由内存调入磁盘,也就是内存交换区进入内存的数量。 一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足。需要增加系统内存。? IO项显示磁盘读写状况? Bi列表示从块设备读入数据的总量(即读磁盘)(每秒kb)。 Bo列表示写入到块设备的数据总量(即写磁盘)(每秒kb) 这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大,则表示系统磁盘IO有问题,应该考虑提高磁盘的读写性能。 system 显示采集间隔内发生的中断数 in列表示在某一时间间隔中观测到的每秒设备中断数。 cs列表示每秒产生的上下文切换次数。 上面这2个值越大,会看到由内核消耗的CPU时间会越多。 CPU项显示了CPU的使用状态,此列是我们关注的重点。 us列显示了用户进程消耗的CPU 时间百分比。us的值比较高时,说明用户进程消耗的cpu 时间多,但是如果长期大于50%,就需要考虑优化程序或算法。 sy列显示了内核进程消耗的CPU时间百分比。Sy的值较高时,说明内核消耗的CPU资源很多。 根据经验,us+sy的参考值为80%,如果us+sy大于 80%说明可能存在CPU资源不足。 id 列显示了CPU处在空闲状态的时间百分比。 wa列显示了IO等待所占用的CPU时间百分比。 wa值越高,说明IO等待越严重,根据经验,wa的参考值为20%,如果wa超过20%,说明IO等待严重,引起IO等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘或者磁盘控制器的带宽瓶颈造成的(主要是块操作)。综上所述,在对CPU的评估中,需要重点注意

软件性能瓶颈分析方法及优化

软件性能瓶颈分析方法及优化 影响软件应用性能的因素有很多,下面简单介绍下其中几种影响因素及分析方法。 一、性能瓶颈分析 1、内存分析 内存的使用情况是系统性能中重要的因素之一,频繁的页交换及内存泄露都会影响到系统 的性能(这里主要以Windows系统为主)。 内存分析用于判断系统有无遇到内存瓶颈,是否需要通过增加内存等手段提高系统性能表现。 (1)、查看Memory\Available Mbytes指标 在对系统进行操作系统级别的内存分析时,首先需要通过该指标(Available Mbytes:Windows系统自带计数器的一个计数值)建立一个初步的印象,了解性能测试过程中 系统是否仍然有足够的内存可用。如果该指标比较小,系统可能存在内存不足方便的问题,这时需要继续依据具体问题进行下一步分析。 (2)、注意Pages/sec、Pages Read/sec和Page Faults/sec的值 操作系统经常会利用磁盘交换方式提高系统的可用内存量或内存使用效率。Windows和Unix操作系统都提供了类似的方法来支持磁盘交换计数,而这三个指标直接反应了操作系统进行磁盘交换的频度。 如果Pages/sec的计数持续高于几百,很可能有内存方面的问题产生,但Pages/sec的 值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。 Page Faults/sec值表示每秒发生的页面失效次数,页面失效次数越多,说明操作系统向 内存读取的次数越多。 Pages Read/sec的计数值阈值为5,如果计数值超过5,则可以判断存在内存方面的问题。(3)、根据Physical Disk计数器的值分析性能瓶颈 对Physical Disk计数器的分析包括对Pages Read/sec和%DiskTime及Average Disk Queue Length的分析。如果Pages Read/sec的值很低,同时%DiskTime和 Average Disk Queue Length的值很高,则可能是磁盘瓶颈;但如果队列长度增加的同 时Pages Read/sec并未降低,则是由于内存不足。 2、处理器分析 处理器(CPU)也可能是系统的瓶颈,下面是针对处理器进行分析的步骤: (1)、查看System\%Total Processor Time性能计数器的计数值 该计数值用于体现服务器整体的处理器利用率;对于多处理器系统而言,该计数值体现的 是所有CPU的平均利用率。如果该数值持续超过90%,则说明整个系统面临着处理器方 面的瓶颈,需要通过增加处理器来提高性能。 注意事项:由于操作系统本身的特性,在某些多CPU系统中,该数据本身并不大,但如果CPU之间负载状况极不均衡,也应该视作系统产生了处理器方面的瓶颈。 (2)、查看每个CPU的Processor\%Processor Time、Processor\%User Time和Processor\%Privileged Time

操作系统性能分析

操作系统性能分析 1Linux系统性能评估与优化 1.1影响Linux性能的因素 CPU 内存 磁盘I/O带宽 网络I/O带宽 1.2系统性能评估标准 其中: %user:表示CPU处在用户模式下的时间百分比。 %sys:表示CPU处在系统模式下的时间百分比。 %iowait:表示CPU等待输入输出完成时间的百分比。 swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM swap out:即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK。 1.3系统性能分析工具 常用系统命令 Vmstat、sar、iostat、netstat、free、ps、top等 常用组合方式 ?用vmstat、sar、iostat检测是否是CPU瓶颈 ?用free、vmstat检测是否是内存瓶颈

?用iostat检测是否是磁盘I/O瓶颈 ?用netstat检测是否是网络带宽瓶颈 1.4性能评估与优化过程 1.4.1系统整体性能评估(uptime命令) [root@web1 ~]# uptime 16:38:00 up 118 days, 3:01, 5 users, load average: 1.22, 1.02, 0.91 这里需要注意的是:load average这个输出值,这三个值的大小一般不能大于系统CPU 的个数,例如,本输出中系统有8个CPU,如果load average的三个值长期大于8时,说明CPU很繁忙,负载很高,可能会影响系统性能,但是偶尔大于8时,倒不用担心,一般不会影响系统性能。相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲的时间片,比如本例中的输出,CPU是非常空闲的。 1.4.2cpu性能评估 (1)利用vmstat命令监控系统CPU 该命令可以显示关于系统各种资源之间相关性能的简要信息,这里我们主要用它来看CPU一个负载情况。 下面是vmstat命令在某个系统的输出结果: [root@node1 ~]# vmstat 2 3 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 0 162240 8304 67032 0 0 13 21 1007 23 0 1 98 0 0 0 0 0 162240 8304 67032 0 0 1 0 1010 20 0 1 100 0 0 0 0 0 162240 8304 67032 0 0 1 1 1009 18 0 1 99 0 0 ●Procs r列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,说明CPU不足,需要增加CPU。 b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。 ●Cpu us列显示了用户进程消耗的CPU 时间百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,就需要考虑优化程序或算法。 sy列显示了内核进程消耗的CPU时间百分比。Sy的值较高时,说明内核消耗的CPU资源很多。

linux系统性能优化及瓶颈分析

linux系统性能优化及瓶颈分析 一,用vmstat分析系统I/O情况 [root@localhost ~]# vmstat -n 3 (每个3秒刷新一次) procs-----------memory--------------------swap--- ---io---- --system---- ------cpu-------- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 144 186164 105252 2386848 0 0 18 166 83 2 48 21 31 0 2 0 144 189620 105252 2386848 0 0 0 177 1039 1210 34 10 56 0 0 0 144 214324 105252 2386848 0 0 0 10 1071 670 32 5 63 0 0 0 144 202212 105252 2386848 0 0 0 189 1035 558 20 3 77 0 2 0 144 158772 105252 2386848 0 0 0 203 1065 2832 70 14 15 0 IO -bi:从块设备读入的数据总量(读磁盘)(KB/S) -bo:写入到块设备的数据总量(写磁盘)(KB/S) 随机磁盘读写的时候,这2个值越大(如超出1M),能看到CPU在IO等待的值也会越大 二,用iostat分析I/O子系统情况 如果你的系统没有iostat,sar,mpstat等命令,安装sysstat- 7.0.2-1.el5.i386.rpm包,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU 使用情况。同vmstat

XX系统性能测试报告

XXXX系统性能测试报告

1 项目背景 为了了解XXXX系统的性能,特此对该网站进行了压力测试2 编写目的 描述该网站在大数据量的环境下,系统的执行效率和稳定性3 参考文档 4 参与测试人员 5 测试说明 5.1 测试对象 XXXX系统

5.2 测试环境结构图 5.3 软硬件环境 XXXXX 6 测试流程 1、搭建模拟用户真实运行环境 2、安装HP-LoadRunner11.00(以下简称LR) 3、使用LR中VuGen录制并调试测试脚本 4、对录制的脚本进行参数化 5、使用LR中Controller创建场景并执行 6、使用LR中Analysis组件分析测试结果 7、整理并分析测试结果,写测试总结报告 7 测试方法 使用HP公司的性能测试软件LoadRunner11.00,对本系统业务进行脚本录制,测试回放,逐步加压和跟踪记录。测试过程中,由LoadRunner的管理平台调用各前台测试,发起 各种组合业务请求,并跟踪记录服务器端的运行情况和返回给客户端的运行结果。录制登陆业务模块,并模拟30、50、80、100 个虚拟用户并发登陆、添加和提交操作,进行多次连续测试,完成测试目标。 测试评估及数据统计 此次测试通过同一台客户机模拟多个并发用户在因特网环境进行,未考虑因特网的稳定 性的问题。此次测试用户操作流程相对简单,只录制了三个事务,即:用户登录、添加和信息提交,从测试的数据来分析,各项性能指标基本在可控的范围之内。但在测试过程中也发 现一些不容忽视的问题,应予以重视。 1 、模拟80 个用户并发操作时,出现1 个未通过的事务,具体原因需结合程序、网络和服务器综合分析,系统的稳定性并非无可挑剔。 2 、用户登陆事务的平均响应时间与其他两个事务相比等待的时间要长,且波动也较大, 在网速变慢、用户数增加的外部条件下,有可能会影响到系统的稳定性。建议优化系统登录页面程序,提高系统的稳定性。

Linux常见问题及处理方法

一、处理linux系统故障的思路 作为一名合格的linux系统管理员,一定要有一套清晰、明确的解决故障思路,当问题出现时,才能迅速定位、解决问题,这里给出一个处理问题的一般思路: 重视报错提示信息:每个错误的出现,都是给出错误提示信息,一般情况下这个提示基本定位了问题的所在,因此一定要重视这个报错信息,如果对这些错误信息视而不见,问题永远得不到解决。 查阅日志文件:有时候报错信息只是给出了问题的表面现象,要想更深入的了解问题,必须查看相应的日志文件,而日志文件又分为系统日志文件(/var/log)和应用的日志文件,结合这两个日志文件,一般就能定位问题所在。 分析、定位问题:这个过程是比较复杂的,根据报错信息,结合日志文件,同时还要考虑其它相关情况,最终找到引起问题的原因。 解决问题:找到了问题出现的原因,解决问题就是很简单的事情了。 从这个流程可以看出,解决问题的过程就是分析、查找问题的过程,一旦确定问题产生的原因,故障也就随之解决了。 二、忘记linux root密码 这个问题出现的几率是很高的,不过,在linux下解决这个问题也很简单,只需重启linux系统,然后引导进入linux的单用户模式(init 1),由于单用户模式是不需要输入登录密码的,因此,可以直接登录系统,修改root密码即可解决问题。 下面是详细的处理方法,这里我们以Redhatlinux为基准,操作步骤如下: (1)重启系统,待linux系统启动到grub引导菜单时,找到当前系统引导选项(可以按方向键展开隐藏的菜单,单处理器只有一个引导项,多处理器有3个或3个以上引导项,一般默认选项就是系统当前引导选项)。 (2)通过方向键将光标放到当前系统引导项上,然后按键盘字母“e”,进入编辑状态。 (3)然后通过上下键,选中带有kernel指令的一行,继续按键盘字母“e”,编辑该行,在行末尾加个空格,然后添加single,类似与这样: kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet single (4)修改完成,按回车键,返回到刚才的界面。 (5)最后按键盘“b”,系统开始引导。 这样系统就启动到了单用户模式下,这里的单用户根windows下的安全模式类似,在单用户模式下,只是启动最基本的系统,网络以及应用服务均不启动。单用户模式启动完毕,系统会自动进入到命令行状态下,类似与“sh-3.1#”,然后直接执行passwd,回车,系统会提示输入新的root密码两次,最后会看到修改密码成功的提示,这样就完成了root密码的修改。如果需要正常启动系统,现在只需输入“init 3”,就进入了多用户模式。用root用户重新登录系统,看看设置的新密码是否生效。 三linux系统无法启动的解决办法 导致linux无法启动的原因有很多,常见的原因有如下几种: 文件系统配置不当,比如/etc/inittab文件、/etc/fstab文件等配置错误或丢失,导致系统错误,无法启动。

性能分析与调优的原理及原则

性能分析与调优的原理 最近一直纠结性能分析与调优如何下手,先从硬件开始,还是先从代码或数据库。从操作系统(CPU调度,内存管理,进程调度,磁盘I/O)、网络、协议(HTTP,TCP/IP),还是从应用程序代码,数据库调优,中间件配置等方面入手。 单一个中间件又分web中间件(apache、IIS),应用中间件(tomcat、weblogic、webSphere)等,虽然都是中间件,每一样拎出来往深了学都不是一朝一夕之功。但调优对于每一项的要求又不仅仅是“知道”或“会使用”这么简单。起码要达到“如何更好的使用”。 常看到性能测试书中说,性能测试不单单是性能测试工程师一个人的事儿。需要DBA 、开发人员、运维人员的配合完成。但是在不少情况下性能测试是由性能测试人员独立完成的,退一步就算由其它人员的协助,了解系统架构的各个模块对于自身的提高也有很大帮助,同进也更能得到别人的尊重。 再说性能调优之前,我们有必要再提一下进行测试的目的,或者我们进行性能测试的初衷是什么? 能力验证:验证某系统在一定条件具有什么样的能力。 能力规划:如何使系统达到我们要求的性能能力。 应用程序诊断:比如内存泄漏,通过功能测试很难发现,但通过性能测试却很容易发现。 性能调优:满足用户需求,进一步进行系统分析找出瓶颈,优化瓶颈,提高系统整体性能。 一、一般系统的瓶颈 性能测试调优需要先发现瓶颈,那么系统一般会存在哪些瓶颈: 1、硬件上的性能瓶颈:

一般指的是CPU、内存、磁盘I/O 方面的问题,分为服务器硬件瓶颈、网络瓶颈(对局域网可以不考虑)、服务器操作系统瓶颈(参数配置)、中间件瓶颈(参数配置、数据库、web服务器等)、应用瓶颈(SQL 语句、数据库设计、业务逻辑、算法等)。 2、应用软件上的性能瓶颈: 一般指的是应用服务器、web 服务器等应用软件,还包括数据库系统。 例如:中间件weblogic 平台上配置的JDBC连接池的参数设置不合理,造成的瓶颈。 3、应用程序上的性能瓶颈: 一般指的是开发人员新开发出来的应用程序。 例如,程序架构规划不合理,程序本身设计有问题(串行处理、请求的处理线程不够),造成系统在大量用户方位时性能低下而造成的瓶颈。 4、操作系统上的性能瓶颈: 一般指的是windows、UNIX、Linux等操作系统。 例如,在进行性能测试,出现物理内存不足时,虚拟内存设置也不合理,虚拟内存的交换效率就会大大降低,从而导致行为的响应时间大大增加,这时认为操作系统上出现性能瓶颈。 5、网络设备上的性能瓶颈: 一般指的是防火墙、动态负载均衡器、交换机等设备。 例如,在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其他负载较轻的应用服务器上。在测试时发现,动态负载均衡器没有起到相应的作用,这时可以认为网络瓶颈。 性能测试出现的原因及其定位十分复杂,这里只是简单介绍常见的几种瓶颈类型和特征,而性能测试所需要做的就是根据各种情况因素综合考虑,然后协助开发人员/DBA/运维人员一起定位性能瓶颈。 二、一般性能调优步骤 一般性能问题调优的步骤: 1、步骤一:确定问题 应用程序代码:在通常情况下,很多程序的性能问题都是写出来的,因此对于发现瓶颈的模块,应该首先检查一下代码。

相关主题
文本预览
相关文档 最新文档