RT
我想写个脚本来监控一个程序的消息队列是否阻塞
我现在不知道要监控程序的代码结构。
要从哪些方面可以监控出来呢???
请教高手
|
用ipcs -q可以列出消息队列状态,然后用awk等工具取出队列长度,超过阈值就可以报警
比如:
[code=BatchFile]
mymtom@freebsd:src/unp$ ipcs -oq
Message Queues:
T ID KEY MODE OWNER GROUP CBYTES QNUM
q 327680 16859967 --rw------- mymtom member 6 6
mymtom@freebsd:src/unp$ ipcs -oq | awk -v max=3 '($1 == "q") && ($8 > max) { print $8, max }'
6 3
mymtom@freebsd:src/unp$ ipcs -oq | awk -v max=3 '($1 == "q") && ($8 >= max) { print $8, max }'
6 3
mymtom@freebsd:src/unp$ ipcs -oq | awk -v max=8 '($1 == "q") && ($8 >= max) { print $8, max }'
mymtom@freebsd:src/unp$ ipcs -oq | awk -v max=6 '($1 == "q") && ($8 >= max) { print $8, max }'
6 6
[/code]
|
4)int msgctl(int msqid, int cmd, struct msqid_ds *buf);
该系统调用对由msqid标识的消息队列执行cmd操作,共有三种cmd操作:IPC_STAT、IPC_SET 、IPC_RMID。
1. IPC_STAT:该命令用来获取消息队列信息,返回的信息存贮在buf指向的msqid结构中;
2. IPC_SET:该命令用来设置消息队列的属性,要设置的属性存储在buf指向的msqid结构中;可设置属性包括:msg_perm.uid、msg_perm.gid、msg_perm.mode以及msg_qbytes,同时,也影响msg_ctime成员。
3. IPC_RMID:删除msqid标识的消息队列;
api还是自己多查查吧