ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Solaris性能优化经验总结

Solaris性能优化经验总结

原创 Linux操作系统 作者:JoshuaJin 时间:2011-03-16 11:53:55 0 删除 编辑
在Solaris 的维护中,经常出现的是系统性能维护上的问题,影响系统性能的因素有很多,我们将从对系统的平均负荷、进程监视、CPU、I/O 及内存管理、网络流量诊断等方面
进行了分析阐述,给出了在Solaris 性能维护上的一些方法和经验。
系统的性能是指该系统完成任务的情况,它的有效性、稳定性和响应速率。系统管理员
们常常抱怨系统性能不好、不稳定、系统响应速度太慢等等,所有这类问题仅仅是一些表面现象。整个网络系统的性能的好坏是与网络拓朴结构,服务器系 统、路由设备、路由政策、接入设备、物理线路等多个方面密切相关的,任何一个环节出现问题,都会影响整个系统的性能。在优化整个系统性能之前,必须监视、 审计每一个环节中系统资源是否合理的使用和分配。服务器和工作站系统性能好坏主要取决于它怎样合理使用和分配它的资源,定期监视、审计系统的性能是非常重 要的,而且应该知道要监视系统哪些资源。系统资源包括3个方面:
----1、CPU;
----2、内存子系统;
----3、I/O 子系统。
这3个方面,不论那一方面存在问题都会对系统性能产生影响,而审计系统性能也是从这3方面入手。审计系统性能的工具很多,在Solaris 操作系统中提供了多种用来审计系统资源运行情况的工具,主要包括:
The uptime and sar commands, 用来报告系统的平均负荷;
The ps command, 提供系统中正在运行进程的相关信息;
The df command, 提供有关磁盘使用方面的信息;
The vmstat 、iostat and sar commands, 报告系统活动情况,提供内存使用的相关信息、I/O
系统信息、CPU 活动等;
The swap command, 用来统计系统中swap 使用情况;
The netstat command ,用来显示有关网络性能方面的信息。
值 得注意的是,对于服务器/工作站系统,由于用户量的不断增加,系统资源的使用和分配可能在一段时间内较为合理,一段时间之后,系统资源可能处于超负荷运行 状态,所以说,系统性能管理是一项长期的工作,应将系统性能管理作为日常系统管理工作的一部分,来维护系统可靠、高效运行。
在对系统进行性能优化之前,必须知道系统的硬件资源配置、软件资源的使用及整个系统配置是否存在问题。这些问题的发现往往建立在系统给人们的印象上。比如:系统对用户的响应速率慢,进程运行需花更多的时间等等。如果发现了这些现象,就应该采集系统主要资源数据并进行分析,找到提高系统性能的方法。
系统性能分析的标准工具:
CPU: vmstat  sar  ps
内存:vmstat  ps
磁盘:iostat  vmstat
网络:netstat  nfsstat
性能调优一般步骤注:此处应该为一般标准:
性能调优的主要目的是使系统能够有效的利用各种资源,但衡量系统资源利用率好坏的标准
是什么,针对不同的系统和应用没有严格的定义,一般参照以下条件来判定主要资源使用状况:
好                    坏                        糟糕
CPU : user% + sys%< 70%   user% + sys%= 85%        user% + sys% >=90%
磁盘:   iowait % < 30%        iowait % =40%         iowait % >= 50%
内存:No Page In & Page Out   Per CPU with 10 page/s    More Page In & Page Out
网络: < 30% Bandwidth
通过以下步骤,发现影响整体性能的关键资源,进行性能优化,必要时需要添加或升级某种
硬件设备。
1.用iostat、sar 检测是否是CPU 原因
2.用vmstat、svmon 检测是否是内存原因
3.用filemon、iostat 检测是否是硬盘原因
4.用netstat 、nfsstat 检测是否是网络原因
一、系统的平均负荷
系统在不同时间内的平均负荷(Last mimute 、Last 5 minutes 、Last 15 minutes)是用来
评估系统是否超负荷运行较方便、较常用的一种方法。系统在正常运行的情况下,3 个值的
范围应在0-2 。对于Solaris 操作系统,可以用下面几条命令获取系统平均负荷(以主机
solarisEXP 为例):
----1. uptime
solarisEXP% uptime
2:06 下午运行1 天5:27,7 users, 平均负荷:0.00,0.01,0.01
----2 、sar (system activity reporter) 命令本身能用于采集系统活动数据或从sadc 建立的每
日活动文件中提取系统活动数据。
solarisEXP% sar –q(从文件中取数据)
00:00:01 runq-sz  %runocc  swpq-sz  %swpocc
01:00:01 1.0 0
02:00:01 1.8 0
03:00:01 1.3 0
04:00:01 1.8 0
05:00:01 2.0 0
Average 1.6 0
----或使用:“sar –options t n ”从当前开始,在t 秒(t>=5)时间间隔内,采集n 次系统活动数据。
----runq-sz 正常情况下它应小于2。如果此值连续大于2 表明系统可能处于CPU-bound 状态。
如果%runocc 大于90,并且runq-sz 大于2,表明CPU 处于超负荷状态,系统响应速率下降。
例:
sar -u 显示项的含义(检查CPU 的使用率)
%usr cpu 执行用户进程的时间
%sys cpu 执行系统进程的时间
%wio cpu 等待完成I/O 的时间
%idel cpu 的空闲时间
显示结果分析说明
一般情况下%usr 和%sys 的值基本相等
在一般的多用户系统中,%idel 的值通常大于40%
若 %wio 经常>15%意味着硬盘可能存在着瓶颈
若%idel 经常小于30%,意味着处理器的处理能力较弱
若%idel 经常小于10%,表明处理器负担较重,或者存在逃逸进程。
若%idel接近于0,而且%sys 远高于%usr,则可能是内存短缺引起了大量的swaping 和paging
sar -p 检查系统中是否有较多的等待进程
Sar -p :检查系统中是否有过多的等待进程
此命令有四个相关字段:
runq-sz :内存(memory)中可以运行的进程数
%runocc:进程进入内存等待的概率
swpq-sz :对换区(swap )中等待运行的进程数
%swpocc:进程进入swap 等待的概率
显示结果分析汇总如下:
1) 若runq-sz 经常大于2 并且%runocc 经常大于90%,意味着处理器负载过重
2) 若%swpocc 不为0,表示系统已经置换出了进程。可以采用增加内存或减少缓冲的方法来减少swap 和paging。
二、系统进程监视
系统中运行的进程都不同程度的消耗系统资源,通过监视这些进程,找到对系统资源影
响较大的进程,就能够采取相应措施改善系统性能。
在Solaris 系统中,可以通过ps 命令采集进程数据,系统中有2 条ps 命令(/usr/bin/ps、
/usr/ucb/ps ),建议两条命令结合使用,ps 命令能够用来监视系统中活动进程的执行状态,它能汇报下列信息:
用户名称;
进程的ID(PID);
CPU 使用时间;
内存使用情况;
当前进程状态;
进程的优先级;
进程类型。
通过观察分析ps 命令输出结果,如果发现异常情况,如某个进程占用CPU/MEM 过多、
某个用户产生很多进程等等,此时的问题不是用户的问题,而是过重的CPU load 阻碍用户的访问速率。这时候可以对那些显尔易见的问题采取相应补救措施:
如果发现某个用户产生很多进程,占用过多的系统资源,可以kill 其中的消耗资源较多
的进程,释放系统资源;
如果发现某个进程积聚大量时间,这可能指示进程处于无限循环状态或进程出现错误。
在咨询这个进程的用户后,可以终止此进程。
如果发现某个不很重要的进程消耗大量CPU,可以使用nice/priocntl 命令改变此进程的
优先级。使它在较低的优先级中运行。
---- 除采取上述措施外,还应该分析其他的问题, 通常关心的是那些runnable、blocked for disk I/O 、or paging jobs, 而不是那些sleeping、stoped 进程,因为这些进程并不影响整个系统的性能。如果必要的进程占用内存很大,表明系统可能需要增加内存。
三、CPU 与I/O 监控
从PS 得到的数据是非常详细的,通常不仅需要知道每个进程的状态,而且还需知道整
个系统的状态,有许多方法可以得到整个系统的状态比如:
1、df 命令报告磁盘的使用情况,显示mount or unmount 文件系统磁盘空间使用情况;
2、iostat and vmstat 命令显示系统资源状况;iostat 命令汇报磁盘I/O 状态、进程流通
量、队列长度、服务时间等,vmstat 命令显示内存使用情况、CPU 负荷、paging、系统调用等等。
3、sar 命令收集、报告系统的活动情况。
四、内存统计管理
在系统运行的不同时期,可用内存能否满足程序运行的需求是影响系统性能的一个重要
因素。如果可用内存不能满足程序运行的需要,那么系统就重复从物理内存中拷贝一个或多
个页面到磁盘,以及从磁盘拷贝页面到内存。在从物理内存中拷贝一个或多个页面到磁盘后,
系统为其它任务重新使用这些内存,这就是通常所说的“paging”。一旦系统启动paging,
整个系统的性能可能会急剧下降直到系统内存又满足程序运行的需要。总之,当可用内存不
能满足系统需要时会影响系统性能;当可用内存满足系统需要时则不会影响系统,因此,应
该经常监视有关内存使用数据并进行分析,预测可能发生的问题,扩展内存或调整内存配置
参数使系统稳定可靠运行。
通常,系统采取两种方式来满足所有进程对内存的需求:paging and swapping.swapping
移动整个进程到磁盘,从而达到回收内存的目的。在下一次系统运行该进程时,它必须从磁
盘swap 区中拷贝整个进程的内存映象到内存中去。Paging 移动进程的部分页面到磁盘来达到回收内存的目的,进程的大多数页面仍保留在内存中。
五、网络流量诊断
网络问题是影响系统性能的问题之一,诊断网络问题最简单的工具当然是使用系统提供
的命令netstat,使用“-i ”选项,命令netstat 能显示接口状态,举例如下:
solarisEXP% netstat –i
name mtu net/dest address
ipkts ierrs opkts oerrs collis queue
lo0 8232 loopback localhost 2616 0 2616 0 0 0
le0 1500 202.96.30.0 tech 75083 0 69325 1 621 0

命令结果显示了在每一个接口发送和接收数据包的情况,其中的3 项:ierrs、oerrs and collis
与网络性能问题有关:
ierrs,是指主机从网络接收数据包中包含有多少不正确的数据包,如果ierrs 很大,通
常表明硬件接口存在问题或硬件驱动器接受数据包较慢,此时应该在不同时间多次采集数据
进行比较来决定采取什么措施。正常情况下,ierrs/opkts<0.025%.
oerrs,是指主机从网络送出的数据包中包含有多少不正确的数据包。正常情况下
oerrs/ipkts< 0.025%.
collis,碰撞是在局域网中有两面三刀个或以上系统同时发送数据时产生的,如果碰撞率
(collis/opkts)大于5%,说明网络负荷过大。此时应该调整网络结构,减少网络流量。
六、一些常用的技巧
1、swap –a
在日常的工作中,我们可能会遇上swap 分区不够大的情况,但是主机又不能重新安装修改分区大小,那我们就可以使用swap –a 命令来实现在不重启的情况下在线扩大swap 分区。
命令如下:
mkfile 200m /export/swapfile
swap –a /export/swapfile
swap –l
2、inode 问题
inode 是什么:inode 是在solaris 下记录文件的信息,以及跟该文件相关的数据块信息的数字。
实战情况:分区内文件数目过多导致inode 用完而分区还有剩余空间。
实例:
#df –oi
Filesystem iused i free %iused Mounted on
/dev/dsk/c0t0d0s3 389627 1157 100% /hta
/dev/dsk/c0t0d0s4 612 440284 0% /htab
# df –k
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t0d0s0 2052750 878481 1112687 45% /
/proc 0 0 0 0% /proc
fd 0 0 0 0% /dev/fd
/dev/dsk/c0t0d0s3 3095966 452914 2581133 15% /hta
/dev/dsk/c0t0d0s4 2594582 383375 2159316 16% /htab
swap 645576 1080 644496 1% /tmp
处理办法:
a. 删除不需要的文件
b. 备份分区
c. 用newfs 的-i 参数重新构建文件系统
d. 把备份的数据恢复到新建的分区
疑问:inode 数量是不是越多越好呢?我们应该如何合理使用inode?
3、raid
RAID 级别,描述,速度* ,容错性能
RAID 0,硬盘分段,硬盘并行输入/出,无
RAID 1,硬盘镜像,没有提高,有(允许单个硬盘错)
RAID 2 ,硬盘分段加汉明码纠错,没有提高,有(允许单个硬盘错)
RAID 3,硬盘分段加专用,奇偶校验盘,硬盘并行输入/出,有(允许单个硬盘错)
RAID 4,硬盘分段加专用,奇偶校验盘需异步硬盘,硬盘并行输入/出,有(允许单个硬盘错)
RAID 5,硬盘分段加奇偶校验,分布在各硬盘,硬盘并行输入/出比RAID0 稍慢,有(允许单个硬盘错)
如何选择?
附录:
Oracle 在solaris 下安装的参数设置及参数含义:
solaris 的内核参数保存在/etc/system 文件内,用VI 之类的编辑器/etc/system,..
以安装9i 为例,在system 文件末端添加以下行:
set shmsys:shminfo_shmmax=4294967295 (如果是4G 的物理内存,设为2147483647)
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmseg=100
set shmsys:shminfo_shmmni=1
set semsys:seminfo_semmns=800
set semsys:seminfo_semmni=315
set semsys:seminfo_semmsl=300
各参数说明:
shmmax -共享内存段的最大字节数,,oracle 官方文档建议该值设为物理内存的1/2
shmmin -共享内存段的最小尺寸.
shmmni -共享内存段的最大数目.
shmseg -每个进程可分配的最大共享内存段数目.
shmall -最大的并发共享内存段数目,比SGA 还要大.
semmns -信号灯的最大数量,跟ORACLE 的PROCESS 数有关.
semmsl -每个信号灯集合中最多的信号灯数目.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25196159/viewspace-689589/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-01-05

  • 博文量
    30
  • 访问量
    62294