1.blockedqueueԴ?源码?
2.怎样分析linux的性能指标
3.å¦ä½è·åqueueviewmbean对象
4.Pythonå¤è¿ç¨ç³»åä¹Queueç±»
blockedqueueԴ??
please input task ID that was blocked by message queue,or 0 for all queueï¼
请è¾å ¥ç±æ¶æ¯éåé»å¡çä»»å¡IDï¼æè¾å ¥ææéåç0ï¼
please请; 讨好; 使é«å ´; 使满æ; 讨人å欢
inputè¾å ¥ï¼æå ¥; è¾å ¥çµè·¯; <çµ>è¾å ¥ç«¯; è¾å ¥çæ°æ®; æâ¦è¾å ¥çµè; è¾å ¥; è¾å ¥ï¼ç»æ
taskä½ä¸; å·¥ä½ï¼ä»»å¡; è¦å·®äº; 交ç»æ人; 使è¿äºå³ç´¯
blockedå°éçï¼éå¡çï¼èéç; å µå¡( blockçè¿å»å¼åè¿å»åè¯ ); é»ç¢; 设计; é»æ¡
message queueä¿¡æ¯æé
for allå°½ç®¡ï¼ è½ç¶
queueè¡åï¼é¿é; 辫å; æéçå; æéï¼åéçå¾
怎样分析linux的性能指标
LR
监控
UNIX/Linux
系统方法
一、准备工作:
1.
可以通过两种方法验证服务器上是源码否配置
rstatd
守护程序:
①使用
rup
命令,它用于报告计算机的源码各种统计信息,其中就包括
rstatd
的源码二次元类型游戏源码配置信息。使用命
令
rup
...,源码
此处
...
是要监视的
linux/Unix
服务器的
IP
,如果该命令返回相关的源码在线源码调试
统计信息。则表示已经配置并且激活了
rstatd
守护进程;若未返回有意义的源码统计信息,或者出现一
条错误报告,源码则表示
rstatd
守护进程尚未被配置或有问题。源码
②使用
find
命令
#find / -name rpc.rstatd,源码
该命令用于查找系统中是否存在
rpc.rstatd
文件,如果没有,源码说明系统没
有安装
rstatd
守护程序。源码
2
.
linux
需要下载
3
个包:
(
1
)
rpc.rstatd-4.0.1.tar.gz
(
2
)
rsh-0.-.i.rpm
(
3
)
rsh-server-0.-.i.rpm
3
.下载并安装
rstatd
如果服务器上没有安装
rstatd
程序(一般来说
LINUX
都没有安装)
,源码java 并发包源码需要下载一个包才有这个服
务
,源码
包
名
字
是
rpc.rstatd-4.0.1.tar.gz.
这
是
一
个
源
码
,
需
要
编
译
,
下
载
并
安
装
rstatd
(
可
以
在
municate with the portmapper on host '...'.
RPC: RPC call failed.
RPC-TCP: recv()/recvfrom() failed.
RPC-TCP: Timeout reached. (entry point: CFactory::Initialize). [MsgId: MMSG-]
检查原因,发现是源码
Linux
系统中的防火墙开启了并且阻挡了
LoadRunner
监控
Linux
系统的资源,
因此要将防火墙关闭。天正引线标注源码
关闭防火墙:
[root@localhost ~]# /etc/init.d/iptables stop;
三、监控
UNIX
lr
监控
UNIX
UNIX
先启动一
rstatd
服务
以下是在
IBM AIX
系统中启动
rstatd
服务的方法:
1
.使用
telnet
以
root
用户的身份登录入
AIX
系统
2
.在命令行提示符下输入:
vi /etc/inetd.conf
3
.查找
rstatd
,找到
#rstatd
sunrpc_udp
udp
wait
root /usr/sbin/rpc.rstatd rstatd 1-3
4
、网页查不到源码将
#
去掉
5
、
:wq
保存修改结果
6
、命令提示符下输入:
refresh
–
s inetd
重新启动服务。
这样使用
loadrunner
就可以监视
AIX
系统的性能情况了。
注:在
HP UNIX
系统上编辑完
inetd.conf
后,重启
inetd
服务需要输入
inetd -c
UNIX
上也可以用
rup
命令查看
rstatd
程序是否被配置并激活
若
rstatd
程序已经运行,
重启时,
先查看进程
ps -ef |grep inet
然后杀掉进程,
再
refresh
–
s inetd
进行重启。
å¦ä½è·åqueueviewmbean对象
org.apache.activemq.broker.jmx
æ¥å£queueviewmbean
All Superinterfaces:
destinationviewmbean
All Known Implementing Classes:
queueview
å ¬å ±æ¥å£queueviewmbean
延伸
destinationviewmbean
Method Summary
int copymatchingmessagestoï¼å符串éæ©å¨ï¼å符串destinationNameï¼
å°ç»å®çéæ©å¨å¹é çæ¶æ¯
int copymatchingmessagestoï¼å符串éæ©å¨ï¼å符串destinationNameï¼ int maximummessagesï¼
å°ç»å®çéæ©å°å¹é çæ¶æ¯çæ大æ°ç® å¹é çæ¶æ¯
å¸å° copymessagetoï¼å符串messageIdï¼å符串destinationNameï¼
å¤å¶ä¸ä¸ªç»å®çæ¶æ¯å°å¦ä¸ä¸ªç®çå°ã
int cursorsizeï¼ï¼
å¸å° doescursorhavemessagesbufferedï¼ï¼
å¸å° doescursorhavespaceï¼ï¼
é¿ getcursormemoryusageï¼ï¼
int getcursorpercentusageï¼ï¼
å¤åæ°æ® GetMessageï¼å符串messageIdï¼
æ£ç´¢ä»ç®æ éåçæ¶æ¯ã
å°å¾<å符串ï¼å符串> getmessagegroupsï¼ï¼
å符串 getmessagegrouptypeï¼ï¼
å¸å° iscacheenabledï¼ï¼
å¸å° iscursorfullï¼ï¼
int movematchingmessagestoï¼å符串éæ©å¨ï¼å符串destinationNameï¼
å°ç»å®çéæ©å¨å¹é çæ¶æ¯
int movematchingmessagestoï¼å符串éæ©å¨ï¼å符串destinationNameï¼ int maximummessagesï¼
å°ç»å®çéæ©å°å¹é çæ¶æ¯çæ大æ°ç® å¹é çæ¶æ¯
å¸å° movemessagetoï¼å符串messageIdï¼å符串destinationNameï¼
å°é®ä»¶ç§»å¨å°å¦ä¸ä¸ªç®çå°ã
æ æ ååï¼ï¼
å é¤ææéåä¸çæ¶æ¯ã
æ æ removeallmessagegroupsï¼ï¼
å é¤ææçä¿¡æ¯ä¼å¨æ¶è´¹è 群ä½å¹³è¡¡æææ¶æ¯ç»
int removematchingmessagesï¼å符串éæ©å¨ï¼
å é¤ç»å®éæ©å¨å¹é çæ¶æ¯
int removematchingmessagesï¼å符串éæ©å¨ï¼ int maximummessagesï¼
å é¤ç»å®çéæ©å°å¹é çæ¶æ¯çæ大æ°ç® å¹é çæ¶æ¯
å¸å° removemessageï¼å符串messageIdï¼
ä»éåä¸å é¤ä¸ä¸ªæ¶æ¯ã
æ æ removemessagegroupï¼å符串ç»åï¼
å é¤é®ä»¶ç»å ·æ平衡群ä½çå½±å
å¸å° retrymessageï¼å符串messageIdï¼
移å¨æ¶æ¯åå°åæ¥çç®çå°
int retrymessagesï¼ï¼
éè¯ä¿¡æ¯åéå°æ»ä¿¡éå
ä»çé¢org.apache.activemq.broker.jmx继æ¿çæ¹æ³ãdestinationviewmbean
æµè§ï¼æµè§ï¼browseastableï¼browseastableï¼browsemessagesï¼browsemessagesï¼getaverageblockedtimeï¼getaverageenqueuetimeï¼getaveragemessagesizeï¼getblockedproducerwarningintervalï¼getblockedsendsï¼getconsumercountï¼getdequeuecountï¼getdispatchcountï¼getenqueuecountï¼getexpiredcountï¼getinflightcountï¼getmaxauditdepthï¼getmaxenqueuetimeï¼getmaxmessagesizeï¼getmaxpagesizeï¼getmaxproducerstoauditï¼getmemorylimitï¼getmemorypercentusageï¼getmemoryusagebytecountï¼getmemoryusageportionï¼getminenqueuetimeï¼getminmessagesizeï¼getNameï¼getoptionsï¼getproducercountï¼getqueuesizeï¼getslowconsumerstrategyï¼getsubscriptionsï¼gettotalblockedtimeï¼isalwaysretroactiveï¼isdlqï¼isprioritizedmessagesï¼isproducerflowcontrolï¼isusecacheï¼resetstatisticsï¼sendtextmessageï¼sendtextmessageï¼sendtextmessageï¼sendtextmessageï¼sendtextmessagewithpropertiesï¼setalwaysretroactiveï¼setblockedproducerwarningintervalï¼setmaxauditdepthï¼setmaxpagesizeï¼setmaxproducerstoauditï¼setmemorylimitï¼setmemoryusageportionï¼setproducerflowcontrolï¼setusecache
Method Detail
GetMessage
å¤åæ°æ® GetMessageï¼å符串
messageIdï¼opendataexception
æ£ç´¢ä»ç®æ éåçæ¶æ¯ã
åæ°:
messageId
ä¿¡æ¯çæ£ç´¢æ¶æ¯ID
éè´§
ä¸ç§å¤åæ°æ®å¯¹è±¡æ¯ä¸ä¸ªJMXçæ¬ä¿¡æ¯
Throws:
opendataexception
removemessage
å¸å°removemessageï¼å符串
messageIdï¼ä¾å¤
ä»éåä¸å é¤ä¸ä¸ªæ¶æ¯ãå¦ææ¶æ¯å·²ç» æ´¾é£å°å¦ä¸ä¸ªæ¶è´¹è ï¼æ¶æ¯ä¸è½è¢«å é¤ï¼è¿ æ¹æ³å°è¿åfalseã
åæ°:
messageId
â
éè´§
å¦ææ¶æ¯è¢«åç°å¯ä»¥æåå é¤ã
Throws:
ä¾å¤
removematchingmessages
intremovematchingmessagesï¼å符串
éæ©å¨ï¼ä¾å¤
å é¤ç»å®
Pythonå¤è¿ç¨ç³»åä¹Queueç±»
å¨ä½¿ç¨å¤è¿ç¨çè¿ç¨ä¸ï¼æ好ä¸è¦ä½¿ç¨å ±äº«èµæºãæ®éçå ¨å±åéæ¯ä¸è½è¢«åè¿ç¨æå ±äº«çï¼åªæéè¿multiprocessingç»ä»¶æé çæ°æ®ç»æå¯ä»¥è¢«å ±äº«ãQueueæ¯ç¨æ¥å建è¿ç¨é´èµæºå ±äº«çéåçç±»ï¼ä½¿ç¨Queueå¯ä»¥è¾¾å°å¤è¿ç¨é´æ°æ®ä¼ éçåè½ãä½æ¯Queueåªè½å¨Processç±»ä¸ä½¿ç¨ï¼ä¸è½åPoolç±»ä¸ä½¿ç¨ã
1.åºæ¬ä»ç»1.1 æé æ¹æ³Queue([maxsize])
maxsizeæ¯éåä¸å 许æ大项æ°ï¼çç¥å为æ é大éå
1.2 å®ä¾æ¹æ³put():ç¨æ¥å¨éåä¸æå ¥æ°æ®ã该æ¹æ³æ2个å¯éåæ°ï¼blockedåtimeoutãè¥blockedçå¼ä¸ºTrue(é»è®¤å¼)ä¸timeoutçå¼å¤§äº0ï¼è¯¥æ¹æ³ä¼é»å¡timeoutçæ¶é´ï¼ç´å°è¯¥éåæå©ä½ç空é´ãè¶ æ¶æåºQueue.Fullå¼å¸¸ãè¥blockedçå¼ä¸ºFalse,ä¸Queue已满ï¼åä¼ç«å³æåºQueue.Fullå¼å¸¸
get():ä»éåè·åä¸ä¸ªå ç´ å¹¶ä¸å é¤è¯¥å ç´ ï¼ç±»ä¼¼äºå表çpop()æ¹æ³ã该æ¹æ³ä¹æ2个å¯éåæ°ï¼blockedåtimeoutãè¥blockedçå¼ä¸ºTrue(é»è®¤å¼)ä¸timeoutçå¼å¤§äº0ï¼ä¼å¨timeoutçæ¶é´å 没æè·åå°æåºQueue.Emptyå¼å¸¸ãè¥blockedçå¼ä¸ºFalse,ä¸éåæä¸ä¸ªå ç´ å¯ç¨ï¼åè¿å该å ç´ ãè¥blockedçå¼ä¸ºFalse,ä¸éå为空åæåºQueue.Emptyå¼å¸¸ã设置blockedçå¼ä¸ºTrueæè åæ°å ¨é¨ç½®ç©ºå¯ä»¥é²æ¢Queueå¨emptyçæ¶åæåºå¼å¸¸ã
put_nowait():åput(blcoked=False)
get_nowait():åget(blcoked=False)
empty():å¤æéåæ¯å¦ä¸ºç©ºãä½æ¯è¯¥æ¹æ³å¨éå为空è¿åTrueæ¶ä¸å¯é ï¼æ¯å¦è¿åTrueæ¶put()æ¹æ³æå ¥äºæ°çæ°æ®ã
full():å¤æéåæ¯å¦å·²æ»¡ï¼è¯¥æ¹æ³ä¹ä¸å¯é ï¼æ¯å¦è¿åTrueæ¶get()æ¹æ³åèµ°äºæ°æ®ã
qsize():è¿åéåä¸ç®åå ç´ çæ°éï¼ä¹ä¸å¯é ï¼åå åempty()åfull()
2.使ç¨ç¤ºä¾frommultiprocessingimportQueue,Processimportosimporttimeimportrandomdefwrite(q):print(f'Processtowrite:{ os.getpid()}')forvalueinrange(5):print(f'put{ value}toqueue......')q.put(value)time.sleep(random.random())defread(q):print(f'Processtoread:{ os.getpid()}')whileTrue:value=q.get(True)print(f'get{ value}fromqueue......')if__name__=='__main__':q=Queue()pw=Process(target=write,args=(q,))pr=Process(target=read,args=(q,))pw.start()pr.start()pw.join()pr.terminate()result:
Processtowrite:put0toqueue......Processtoread:get0fromqueue......put1toqueue......get1fromqueue......put2toqueue......get2fromqueue......put3toqueue......get3fromqueue......put4toqueue......get4fromqueue......