谈谈Solaris系统性能上的维护
网络整理 - 06-30
目前由于UNIX操作系统的诸多优点ISP们大多采用UNIX作为提供服务的系统平台其中Solaris占了其中的很大比例在Solaris的维护中经常出现的是系统性能维护上的问题影响系统性能的因素有很多本文从对系统的平均负荷进程监视CPUI/O及内存管理网络流量诊断等方面进行了分析阐述给出了在Solaris性能维护上的一些方法和经验
系统的性能是指该系统完成任务的情况它的有效性稳定性和响应速率系统管理员们常常抱怨系统性能不好不稳定系统响应速度太慢等等所有这类问题仅仅是一些表面现象整个网络系统的性能的好坏是与网络拓朴结构服务器系统路由设备路由政策接入设备物理线路等多个方面密切相关的任何一个环节出现问题都会影响整个系统的性能在优化整个系统性能之前必须监视审计每一个环节中系统资源是否合理的使用和分配服务器和工作站系统性能好坏主要取决于它怎样合理使用和分配它的资源定期监视审计系统的性能是非常重要的而且应该知道要监视系统哪些资源系统资源包括3个方面
1 CPU;
2 内存子系统
3 I/O子系统
这3个方面不论那一方面存在问题都会对系统性能产生影响而审计系统性能也是从这3方面入手审计系统性能的工具很多在Solaris操作系统中提供了多种用来审计系统资源运行情况的工具主要包括
The uptime and sar commands用来报告系统的平均负荷
The ps command提供系统中正在运行进程的相关信息
The df command提供有关磁盘使用方面的信息
The vmstatiostat and sar commands报告系统活动情况提供内存使用的相关信息I/O系统信息CPU活动等
The swap command用来统计系统中swap使用情况
The netstat command用来显示有关网络性能方面的信息
值得注意的是对于服务器/工作站系统由于用户量的不断增加系统资源的使用和分配可能在一段时间内较为合理一段时间之后系统资源可能处于超负荷运行状态所以说系统性能管理是一项长期的工作应将系统性能管理作为日常系统管理工作的一部分来维护系统可靠高效运行
在对系统进行性能优化之前必须知道系统的硬件资源配置软件资源的使用及整个系统配置是否存在问题这些问题的发现往往建立在系统给人们的印象上比如系统对用户的响应速率慢进程运行需花更多的时间等等如果发现了这些现象就应该采集系统主要资源数据并进行分析找到提高系统性能的方法
一 系统的平均负荷
系统在不同时间内的平均负荷(Last mimuteLast minutesLast
minutes)是用来评估系统是否超负荷运行较方便较常用的一种方法系统在正常运行的情况下个值的范围应在对于Solaris操作系统可以用现金条命令获取系统平均负荷(以主机为例)
uptime
% uptime
:下午 运行天 : users 平均负荷:
sar(system activity
reporter)命令本身能用于采集系统活动数据或从sadc建立的每日活动文件中提取系统活动数据
%sar –q(从文件中取数据)
SunOS //
:: runqsz %runocc swpqsz %swpocc
::
::
::
::
::
Average
或使用sar –options t n 从当前开始在t秒(t>=)时间间隔内采集n次系统活动数据
runqsz正常情况下它应小于如果此值连续大于表明系统可能处于CPUbound状态如果%runocc大于并且runqsz大于表明CPU处于超负荷状态系统响应速率下降
二 系统进程监视
系统中运行的进程都不同程度的消耗系统资源通过监视这些进程找到对系统资源影响较大的进程就能够采取相应措施改善系统性能
在Solaris系统中可以通过ps命令采集进程数据系统中有条ps命令(/usr/bin/ps/usr/ucb/ps)建议两条命令结合使用ps命令能够用来监视系统中活动进程的执行状态它能汇报下列信息:
用户名称
进程的ID(PID);
CPU使用时间
内存使用情况
当前进程状态
进程的优先级
进程类型
通过观察分析ps命令输出结果如果发现异常情况如某个进程占用CPU/MEM过多某个用户产生很多进程等等此时的问题不是用户的问题而是过重的CPU
load阻碍用户的访问速率这时候可以对那些显尔易见的问题采取相应补救措施
如果发现某个用户产生很多进程占用过多的系统资源可以kill其中的消耗资源较多的进程释放系统资源
如果发现某个进程积聚大量时间这可能指示进程处于无限循环状态或进程出现错误在咨询这个进程的用户后可以终止此进程
如果发现某个不很重要的进程消耗大量CPU可以使用nice/priocntl命令改变此进程的优先级使它在较低的优先级中运行
除采取上述措施外还应该分析其他的问题通常关心的是那些runnableblocked for disk I/Oor paging
jobs而不是那些sleepingstoped进程因为这些进程并不影响整个系统的性能如果必要的进程占用内存很大表明系统可能需要增加内存
三 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
swappingswapping移动整个进程到磁盘从而达到回收内存的目的在下一次系统运行该进程时它必须从磁盘swap区中拷贝整个进程的内存映象到内存中去Paging移动进程的部分页面到磁盘来达到回收内存的目的进程的大多数页面仍保留在内存中
五 系统信息的自动采集
为获取系统一段时间的活动数据启用系统信息自动采集是非常必要的因为它是最容易获取系统信息的一种方式在系统信息自动采集中有条命令sadcsa
Sadc命令主要是采集系统活动数据并将它放在下一个二进制文件中这个文件只放一天数据它位于目录/var/adm/sa下文件名为sadd其中dd用当前日期代替
为了获取系统不同时期的数据应该定期运行sadc其中最简单的方式是在/var/spool/cron/crontabs/sys文件中运行shell
script sa它运行sadc并将数据写到文件中去可以使用sar命令从文件摘取系统活动数据
六 网络流量诊断
网络问题是影响系统性能的问题之一诊断网络问题最简单的工具当然是使用系统提供的命令netstat使用i选项命令netstat能显示接口状态举例如下
% netstat –I
name mtu net/dest address
ipkts ierrs opkts oerrs collis queue
lo loopback localhost
le tech
命令结果显示了在每一个接口发送和接收数据包的情况其中的项ierrsoerr