日常的CCCC运行维护需要我们了解操作系统的性能信息。而操作系统的最全面动态,而又查看方便的性能试图就是topas命令了,下面以topas输出为例,对AIX系统的性能监控做简要描述,供项目运维组和其他同事参考。
另:1.操作系统报错信息errpt查看。2.磁盘空间使用率采用df查看。这里主要分析性能问题。而运维项目组最为关心的就是日常的操作系统性能问题。
说明:性能阈值的需求基于目前管理的CCCC系统主机性能得出,并不具备一般意义上性能问题分析。
区域2:反映网络使用率的状况。
Netwok;列出了网卡接口,KBPS即每秒钟多少KB(千字节) I-Pack每秒钟输入的数据包个数, O-Pack 每秒钟输出的数据包个数 KB-In每秒钟输入的字节数 KB-Out每秒钟输出的字节数。
当我们发现网络拥堵时(出现网卡传输失效的报错,即网卡发送数据包失败。或者网络响应明显变慢的时候,如果CPU没有问题,那么请检查网络流量)发现某一个网卡的KBPS持续大于四位数,甚至五位数时(这个值要是网卡千兆还是百兆而定)。就要看看这个网卡是什么网卡,在处理什么业务了。在命令行执行netstat –in 查看对应en*接口的ip地址,通过ip地址看看是带官网卡还是生产服务网卡流量高。然后通过netstat –v en* 看看网卡的详细工作状态,出现了多少错包,冲突包,crc校验错或者网络重置过等信息。上述信息请详细看netstat –v en*的输出.如果出现大量crc,错包的话,可能网线有问题或者接触不良。
如果上述均正常,而网络反应慢,则有可能是交换机拥堵。
网络出现问题的可能原因:通过百兆的带管网加载大量数据(以前出现过),大量队列的长时间的ftp传输,或者网线,交换机问题等。
区域3:反映磁盘使用率的状况。Disk Busy%磁盘繁忙的百分比,即磁盘能满足的最大IOPS(每秒IO操作数)和当前IO数量的比率。其他的参数不再解释。望文生义即可。一般主要看磁盘的Busy%,当磁盘的Busy%持续大于85%时,即认为磁盘相当繁忙,已经可能要出问题了。当然,自己知道已经确定要产生大量IO操作的内容则不必在意,等其完成即可。
出现问题的原因:CCCC的应用服务器上面写日志进程或者查询日志的进程大量读写日志,导致磁盘繁忙率高,或者其他程序频繁读写磁盘导致。系统中hdisk0,hdisk1一般为系统盘,内置SCSI磁盘的相对IOPS是较低的。很容易满负荷运行。
区域4:反映进程信息的状况。Name:进程的名称,即进程被执行时启动的二进制文件的名称。PID,进程的ID,进程的ID在系统中唯一,是我们了解跟踪进程信息重要数值。跟踪进程的CPU使用,磁盘IO读写,进程的内存和pagingspace占用等等均需要使用。CPU%进程占用CPU时间的比率,PgSp,进程占用的pagingspace的空间大小。Owner进程的属主,即由哪个操作用户用户启动了这个进程。
在topas中,默认是列出占用cpu最高的前几个的进程信息供参考,如果前面第一区域的的CPU使用率持续高,就要看看这里是那个进程占用了大量的CPU资源,看看是哪个用户的进程,如果自己执行的,则杀掉或者找项目组解决即可。
区域5:反映内存页面和换页空间信息的状况。
换页空间即磁盘上的空间,在AIX操作系统中用来做内存空间使用。具体的理论就不再阐述了,详细信息请参阅操作系统内容。磁盘空间的速度当然相比内存,慢了不止10倍。所以,只是内存页面的一个暂时存放地,存放的还是那些长期不怎么用到的内存页面而已。如果paging大量出现,这时候就有麻烦了,说明:内存不够用了!
该区域主要关注PageIn,PageOut如果这两个数值均大于三位数,并且长期大于这个数值,在技术上叫做内存颠簸,即不停的把内存页面换到磁盘空间上,又从磁盘空间把内存页面读进来,系统的内存使用效率变的极差,系统响应性能也变慢了。
这个信息也可以用vmstat来看,pi和po列即与这里相对应。
当然,如果只是有页面出,或者只有页面入,或者短时间的一些页面换入换出,则没有什么问题,关注一下即可。
区域7就在这里一起说了,区域7反映的是换页空间的使用率,如果换页空间的使用率长期增长,就说明系统内存不足,已经开始使用磁盘空间来缓冲内存了,如果PG使用率持续增长,或者大于50%,需要警惕(到50%在监控平台已经是主要告警啦!),并马上提交系统管理员分析内存增长原因。如果该数值持续增长,系统一定会挂掉的!
区域6:反映内存使用的信息。Real,MB操作系统实际拥有的内存的总量,单位是MB。%Comp,计算型内存占用比率,%Noncomp非计算型内存占用的比率。%Client也为非计算型内存,Noncomp包涵Client型内存,jfs文件系统使用的内存为noncomp,为了区分,jfs2和nfs使用的内存为Client。
计算型内存就是进程实际使用的内存,例如我们写程序的时候malloc内存,或者在排序中使用了堆栈,进程中变量数值都需要在内存中保存,这部分内存为计算型内存(阐述不全面,仅供参考)。而操作系统在进行文件读写,需要的io缓冲区,或者我们在写程序的时候,打开文件,读写文件,均在文件缓冲区进行。(裸设备例外,CCCC的数据库采用RAC,数据的存储全部使用裸设备,在数据库服务器上,数据文件的缓冲在oracle的sga区的data buffer中(这个区域系统认为是计算型内存),是不会占用非计算内存的。)
我们日常监控在看这一部分的内存使用的,一般要看计算型内存是不是在增长,或者计算型内存大于了某一个临界值,一般来说,按照CCCC目前的VMO配置,如果计算型内存大于80%是很危险的,有可能就导致大量pg的使用而性能急剧恶化。
导致内存出问题的可能原因很多。主要有:进程使用了更多的内存,例如,CCCC数据库服务器大量的oracle连接使用了很多内存,或者数据库中执行的某一个sql脚本或者存储过程的执行需要大量的内存来完成其操作(特例库中出现过这个情形,一个存储过程的执行导致操作系统内存被耗尽,pg也随之耗尽,操作系统自动执行PGSP_KILL,把该进程给干掉了,我也是第一次知道aix系统还有这个功能,呵呵)。第二个主要的问题就是内存泄漏,内存泄漏最简单的来说,就是申请了内存空间,使用后不再使用了,但是也没有释放。我们写程序的时候malloc,却没有free。这就导致了严重的问题,随着程序的执行,可用物理内存越来越少,最后就挂了,只好定期重启应用来解决。
操作系统的内存换页机制导致了程序中不用的内存页面最后都跑到pg上面去了,换页空间会持续增长的。因应用导致系统问题就是这么产生的。
CCCC项目中不涉及NFS操作,不再阐述。
请大家平时没事的时候帮忙看看系统性能问题,如有异常,诸位好心里有数,不慌。我们也好及时响应处理。