Onstat -D
INFORMIX-OnLine Version 7.22.UC1 -- On-Line -- Up 00:00:38 -- 423064 Kbytes
Dbspaces
address number flags fchunk nchunks flags owner name
ad5c100 1 ???1 ??1 ??1 ???N ??informix rootdbs
ad5dc28 2 ???1 ??2 ??1 ???N ??informix dbs7
ad5dc98 3 ???1 ??3 ??1 ???N ??informix dbs8
3 active, 2047 maximum
Chunks
address chk/dbs offset page Rd page Wr pathname
ad5c170 1 1 ??50 ??1259? ?289 ??/dev/pa11
ad5c638 2 2 ??50 ??11 ???11 ???/dev/pa12
ad5c710 3 3 ??50 ??3 ???0 ???/dev/pa13
3 active, 2047 maximum
??
??监视“page Rd”和“Page Wr”列中页读和页写的数目,这样可以检查每个chunk访问的均衡情况。记住一个设备上可能会有多个chunk。
Onstat -F
Informix Dynamic Server 2000 Version 9.21.FC1 -- On-Line -- Up 18:05:32 -- s
Fg Writes ?LRU Writes ?Chunk Writes
0 ?????602010 ???355973
address ?????flusher ???state ??data
c0000000ba33e828 ?0 ??????I ????0 ???= 0X0
c0000000ba33f028 ?1 ??????I ????0 ???= 0X0
c0000000ba33f828 ?2 ??????I ????0 ???= 0X0
c0000000ba340028 ?3 ??????I ????0 ???= 0X0
states: Exit Idle Chunk Lru
??监视系统上发生的写操作的种类。前台写(Fg Writes)应该受到限制,LRU写和chunk写会因为系统的不同而不同。
OLTP系统应该减少LRU写,但总会存在chunk写,但是LRU写会减少检查点发生的持续时间。在DSS系统中,chunk写应该大大提高,但仍会发生部分LRU写以限制前台写。在检查点时刻,监视页清除器(刷新器),确保它们都在忙于进行chunk写。
onstat -l
Informix Dynamic Server 2000 Version 9.21.FC1 -- On-Line -- Up 18:07:45 -- 4
046800 Kbytes
Physical Logging
Buffer bufused bufsize numpages numwrits pages/io
P-2 452 2000 364787 288 1266.62
phybegin physize phypos phyused %used
102159 500000 321166 480 0.10
Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
L-2 3 1000 11052069 515302 2412 21.4 213.6
Subsystem numrecs Log Space used
OLDRSAM 11052069 1038267280
address number flags uniqid begin size used %used
c00000001807d4c0 4 U-B---- 6724 300035 25000 25000 100.00
c00000001807d4e0 5 U-B---- 6725 3061dd 25000 25000 100.00
c00000001807d500 6 U-B---- 6726 30c385 25000 25000 100.00
c00000001807d520 7 U-B---- 6727 31252d 25000 25000 100.00
c00000001807d540 8 U-B---- 6728 3186d5 25000 25000 100.00
c00000001807d560 9 U-B---- 6729 31e87d 25000 25000 100.00
??监视物理日志缓冲区的使用情况,观察输出第一行中bufsize和pages/io列,如pages/io除以bufsize大约为75%,则可以判定缓冲区的使用效率较高。如果小于75%,则物理日志缓冲区可能太大。如果该比率大于90%。则物理缓冲区太小。
??采取同样的方法,监视逻辑日志缓冲区的使用情况。但如果使用无缓冲区日志,则缓冲区刷新要看事务的大小,而不是缓冲区的使用情况,这一点也可能总是成立。如果大多数事务比逻辑日志缓冲区页小,那么这一比例可能总是不搞,将逻辑缓冲日志保持其默认值。位物理日志文件应该在检查点发生时进行监测,确定该比率是否接近75%。调整良好的物理日志文件在检查点发生时几乎全满,如文件没满,则会浪费磁盘空间。还应该监视逻辑日志文件以确保它们已备份。使用sysmaster数据库,可确定那个逻辑日志文件是空闲的,在sytrans表中查找min(tx_logunip)>0的行,找出包含开放事务的最后哪个逻辑日志文件。
onstat -m
Informix Dynamic Server 2000 Version 9.21.FC1 -- On-Line -- Up 18:07:45 -- 4
Message Log File: /informix/online_cqys.log
15:04:02 Checkpoint loguniq 6739, logpos 0x884360
15:09:06 Fuzzy Checkpoint Completed: duration was 0 seconds, 12066 buffers no.
15:09:06 Checkpoint loguniq 6739, logpos 0x1719768
15:14:11 Fuzzy Checkpoint Completed: duration was 2 seconds, 3236 buffers not.
15:14:11 Checkpoint loguniq 6739, logpos 0x36aa018
15:19:14 Fuzzy Checkpoint Completed: duration was 0 seconds, 4645 buffers not.
15:19:14 Checkpoint loguniq 6739, logpos 0x39d8454
15:24:17 Fuzzy Checkpoint Completed: duration was 0 seconds, 5692 buffers not.
15:24:17 Checkpoint loguniq 6739, logpos 0x3bfb06c
15:29:20 Fuzzy Checkpoint Completed: duration was 0 seconds, 6731 buffers not.
15:29:20 Checkpoint loguniq 6739, logpos 0x3df959c
15:34:23 Fuzzy Checkpoint Completed: duration was 0 seconds, 7886 buffers not.
15:34:23 Checkpoint loguniq 6739, logpos 0x403f258
??监视消息文件,查找可能发生的特殊事件。监视检查点发生频率及其运行时间。
onstat -P
Informix Dynamic Server 2000 Version 9.21.FC1 -- On-Line -- Up 18:10:41 -- s
Profile
dskreads pagreads bufreads %cached dskwrits pagwrits bufwrits %cached
26059644 31440119 370783723 92.97 1488140 2230274 12930759 88.49
isamtot open start read write rewrite delete commit rollbk
148231940 5204271 7784395 95437285 925906 180816 2501177 160828 21
gp_read gp_write gp_rewrt gp_del gp_alloc gp_free gp_curs
0 0 0 0 0 0 0
ovlock ovuserthread ovbuff usercpu syscpu numckpts flushes
0 0 0 23394.78 14060.69 173 442
bufwaits lokwaits lockreqs deadlks dltouts ckpwaits compress seqscans
3315302 903 1998277520 0 0 254 54700 529618
ixda-RA idx-RA da-RA RA-pgsused lchwaits
334215 1570017 18647872 20544716 204519
Profile信息中有许多可以监测的内容
??对OLTP系统来说,缓存读取命中率是十分重要的。读取命中率应大于等于95%。因为应用程序使用数据,这一点不是总能办到的,但这是一个起点,增加更多的缓冲区通常可以增加缓存读取命中率。也要监视缓存写入命中率,但它不太容易调整,缓冲区增加,它也会增加。应该将初始目标定位于85%或更高,但由于应用不同,该比率可能无法达到。锁冲突可以观察locwaits和locreqs两列,如果lockwaits等于或者大于lockreqs的1%,可能会有锁冲突,改变应用程序使用隔离级别和锁的方式将改善锁冲突的发生几率。
??应用中出现死锁可以重deadlks和dltouts列中检查出,deadlks是Online检测并放弃的死锁数,dltouts是超出死锁时间的查询的数目。只有分布式查询才会出现死锁,如发生死锁,则应该改变应用程序。
onstat -R
NFORMIX-OnLine Version 7.22.UC1 -- On-Line -- Up 00:44:42 -- 423064 Kbytes
16 buffer LRU queue pairs
# f/m length % of pair total
0 f 188 100.0% 188
1 m 0 0.0%
2 f 188 100.0% 188
3 m 0 0.0%
4 f 188 100.0% 188
5 m 0 0.0%
6 f 188 100.0% 188
7 m 0 0.0%
8 f 188 100.0% 188
9 m 0 0.0%
10 f 188 100.0% 188
11 m 0 0.0%
12 f 188 100.0% 188
13 m 0 0.0%
14 f 188 100.0% 188
15 m 0 0.0%
0 dirty, 3000 queued, 3000 total, 4096 hash buckets, 2048 buffer size
start clean at 20% (of pair total) dirty, or 37 buffs dirty, stop at 10%
??观察检查点发生时,每个队列中已经修改的缓冲区的百分比。将它和LRU_MAX_DIRTY参数进行比较,它应该总是小于LRU_MAX_DIRTY。若非如此,则可以判断执行写请求的pagecleaner不够,或者AIO VP不够,也可能是执行物理写入的KAIO线索不够,或者磁盘控制器不够或者驱动器本身饱和。对于OLTP系统,减少LRU_MAX_DIRTY,使之小于LRU队列中的dirty页的百分比通常将减少检查点的持续时间。
Onstat -g ioq
Informix Dynamic Server 2000 Version 9.21.FC1 -- On-Line -- Up 18:42:23 -- 4
046800 Kbytes
AIO I/O queues:
q name/id len maxlen totalops dskread dskwrite dskcopy
adt 0 0 0 0 0 0 0
msc 0 0 1 27777 0 0 0
aio 0 0 19 320953 274 319581 0
pio 0 0 1 297 0 297 0
lio 0 0 1 2556 0 2556 0
gfd 3 0 16 8251 2248 6003 0
gfd 4 0 1 9 9 0 0
gfd 5 0 1 17441 17441 0 0
gfd 6 0 1 3234 3234 0 0
gfd 7 0 1 1618 1618 0 0
gfd 8 0 18 1000492 476405 524087 0
gfd 9 0 16 13049 2778 10271 0
gfd 10 0 1 3 2 1 0
gfd 11 0 1 3 2 1 0
gfd 12 0 16 8743 8405 338 0
gfd 13 0 118 1735774 1462006 273768 0
gfd 14 0 124 1151165 960630 190535 0
??监视I/O请求队列的长度(len)及其最大长度(maxlen)。maxlen大于25或者len总大于10说明请求没有得到及时的服务。如果磁盘或控制器尚未饱和,那么增加更多的VP将会有所帮助。
Onstat -g lsc
Informix Dynamic Server 2000 Version 9.21.FC1 -- On-Line -- Up 18:15:12 -- s
Light Scan Info
descriptor address next_lpage next_ppage ppage_left bufcnt look_e
0 c41edcd0 87 500223 490 1 N
1 c41efe68 85 6000clearcase/" target="_blank" >cc 497 1 Y
1 c41f07b8 83 7000cc 497 1 Y
??用onstat -g lsc判定是否使用了轻扫描。如果表大于缓冲区的大小,隔离级别设置为drity读,或者提交读或对表上加上共享锁,则会进行轻扫描。轻扫描会显著加快大表的扫描速度,ppage_left列显示给定表分片上的仍需要扫描的页数。
Onstat -g ntd
Informix Dynamic Server 2000 Version 9.21.FC1 -- On-Line -- Up 18:18:29 -- s
global network information:
#netscb connects read write q-free q-limits q-exceed alloc/max
455/ 463 5594 8101338 8197592 8/ 92 135/ 10 0/ 0 461/ 461
Client Type Calls Accepted Rejected Read Write
sqlexec yes 5262 16 7295101 7370232
srvinfx yes 246 0 0 0
onspace yes 0 0 0 0
onlog yes 0 0 0 0
onparam yes 0 0 0 0
oncheck yes 11 0 289615 316253
onload yes 0 0 0 0
onunload yes 0 0 0 0
onmonitor yes 0 0 0 0
dr_accept yes 0 0 0 0
cdraccept no 0 0 0 0
ontape yes 51 0 510917 510969
srvstat yes 24 0 24 48
asfecho yes 0 0 0 0
listener yes 0 0 5606 12
crsamexec yes 0 0 0 0
safe yes 0 0 0 0
onutil yes 0 0 75 78
Totals 5594 16 8101338 8197592
??
??监视接受/拒绝的连接数,如果被拒绝的连接数很大,则表示用户表已经溢出(onstat -p ovuserthreads),或者是连接时网络超时。
Onstat -g ppf
INFORMIX-OnLine Version 7.22.UC1 -- On-Line -- Up 9 days 08:06:18 -- 593176 Ks
Partition profiles
partnum lkrqs lkwts dlks touts isrd iswrt isrwt isdel bfrd bfwrt seqsc
23 0 0 0 0 505 11 0 0 0 0 0
24 0 0 0 0 9 0 0 0 0 0 0
25 0 0 0 0 117 108 0 0 0 0 0
28 0 0 0 0 27 0 0 0 0 0 0
1026 0 0 0 0 0 9 0 0 0 0 0
2097164 981899 0 0 0 565034 17143 40936 0 674706 62304 0
2097166 1082441098 0 0 0 540163381 205711 0 208383 541724842 4
6291462 34525 0 0 0 8 0 0 0 88836 18850 0
10485947 39761212 0 0 0 2763355 7732 30897 43 12004155 56154 17
10486038 11793045 0 0 0 1549399 11307 38431 34 5514385 63245 55
??监视使用isrd,iswrt,isrwt,和isdel在打开的分片上进行读写操作的数目,由于只列出了打开的表,因此长时间用onstat -g ppf采样,可以指出有哪些表被频繁使用。用segsc确定从表中读取数据时是否使用了顺序扫描。比较同一表各个分片的情况,判定每个分片的I/O是否均衡。
大梦 回复于:2003-05-29 22:43:55
3721
OK!
bryanheqi 回复于:2003-06-16 17:10:51
顶!
swiser 回复于:2003-09-26 11:33:28
very good,有没有再详细点的,在最后那里看不懂
“?监视使用isrd,iswrt,isrwt,和isdel在打开的分片上进行读写操作的数目,由于只列出了打开的表,因此长时间用onstat -g ppf采样,可以指出有哪些表被频繁使用。用segsc确定从表中读取数据时是否使用了顺序扫描。比较同一表各个分片的情况,判定每个分片的I/O是否均衡。
”
怎样用可以知道有哪些表被频繁使用知道??