beanstalkd:获取队列的状态

在过去的几天中,Jason和我一直在将我们的一些应用程序移植到一个新的puppet(一种集中配置管理系统)中,我们需要做的一件事是检查消息是否正确通过了beanstalkd(一个高性能、轻量级的分布式内存队列系统)。

我们最初的想法是 它没有被正确地配置,所以Paul给我们展示了一种通过连接到它所运行的端口来检查是否是这种情况的方法:

$ telnet localhost 11300
stats
 
current-jobs-urgent: 0
current-jobs-ready: 0
current-jobs-reserved: 0
current-jobs-delayed: 0
current-jobs-buried: 0
cmd-put: 66
...
current-connections: 6
current-producers: 1
current-workers: 1
current-waiting: 1
total-connections: 58
pid: 15622
version: 1.4.6
rusage-utime: 0.000000
rusage-stime: 0.040002
uptime: 22740
binlog-oldest-index: 0
binlog-current-index: 0
binlog-max-size: 10485760

我们用这种方式设置了我们的beanstalks消费者,如果它不能正确地处理消息,我们将把消息放回到'buried'(掩埋)状态的队列中,所以我们会在‘current-jobs-buried’属性里看到一个大于0的数字。

我很好奇,我们该怎样写一行代码来使用netcat(一个用于网络连接工具)获取这些统计信息,并且在一些小操作之后,强制让这个新的字符串正确地发送出去,结果如下:

$ echo -e“stats \ r \ n”| nc localhost 11300

关键是我以前可能已经写过了'-e'参数,但却忘记了:

-e
enable interpretation of the backslash-escaped characters listed below
 
...
 
\NNN
the character whose ASCII code is NNN (octal)
\\
backslash
\a
alert (BEL)
\b
backspace
\c
suppress trailing newline
\f
form feed
\n
new line
\r
carriage return
\t
horizontal tab
\v
vertical tab

我们可以看看如何使用下面的例子:

$ echo -e "mark\nmark"
mark
mark
$ echo  "mark\nmark"
mark\nmark

或者,我们可以通过“-c”或“-C”参数来连接,这取决于我们的netcat版本,CRLF /newline 将作为结束行被发送:

# netcat-openbsd version
$ echo "stats" | nc -C localhost 11300

要么像下面这样

# one on Mac OS X by default
$ echo "stats" | nc -c localhost 11300

回到beanstalkd - 实际上有一个很好的文档解释了你可以发送给它的所有不同的命令,其中大部分我还没有试过!

我遇到了一些有用的:

$ telnet localhost 11300

要查看被放入任务队列的消息的名称

list-tubes
OK 14
---
- default

要使用该任务队列

use default
USING DEFAULT

看看是否有现成的任务

peek-ready
NOT_FOUND

获取该任务队列的统计信息

stats-tube default
OK 253
---
name: default
current-jobs-urgent: 0
current-jobs-ready: 0
current-jobs-reserved: 0
current-jobs-delayed: 0
current-jobs-buried: 0
total-jobs: 155
current-using: 9
current-watching: 9
current-waiting: 1
cmd-pause-tube: 0
pause: 0
pause-time-left: 0

我偶然发现了beanstalk-tools,其中包含了一些用于处理beanstalks的工具,但由于我们只是偶尔用它发送TCP(Transmission Control Protocol 传输控制协议)请求,所以它可能可以做到!

本文的版权归 贼贼大哥 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏phodal

如何创建一个兼容「微信小程序」的Web框架:WIN

在「微信小程序」带领Web走向封闭之前,让我们创造一个Neo的种子。如果有可能的话,那么有一天,它终将成为Neo。 ? 从微信小程序开始内测时,很多人(也包括...

2155
来自专栏小白安全

FEERBUF--Microsoft Office之DDE攻击

Microsoft Office可以说是使用最广泛的办公软件。然而就是因为这样,也使它成为了黑客的主要攻击目标之一,例如在网络安全对抗赛中红队会用它来窃取域哈...

2706
来自专栏北京马哥教育

某次压测时物理内存被用光 Tomcat 被 Kernel kill 掉的案例

? 背景描述 某项目结构图如下(前端交互式体验及对象存储为主,Redis 及 rds 负载较小没有画出): ? web1 和 web2 是两个 Apache,...

2797
来自专栏MixLab科技+设计实验室

爬虫之数据获取的3种方法

封面由ACE Land 人工智能设计师设计,最近升级了一点点小能力,可以给文字配上Icon啦~ 以下为正文: 这是在开发一个持续监测电商数据变化的工具过程中的经...

3477
来自专栏Linuxer的专栏

谢宝友: 深入理解 Linux RCU 之从硬件说起

想要制造出质量可靠的桥梁,就必须真正懂得力学原理。对于想要理解RCU的软件工程师来说,也需要具备一定的硬件基础。

6110
来自专栏酷玩时刻

微信公众号开发之授权获取用户信息

测试号:找到 网页授权获取用户基本信息>点击修改>设置域名 服务号:找到 开发>接口权限>网页授权获取用户基本信息>>点击修改>设置域名

1324
来自专栏企鹅号快讯

技术贴-JNI编程搭建Java与C+的桥梁(一)

今晚北京的风很大,大到路边的ofo都一路向我贴服膜拜。好的吧,这是我今晚的心情,hhh,当我的Java程序抛出了C++算法的运算结果,一下子,我就跳了起来。如同...

3608
来自专栏拂晓风起

浅谈HTML5单页面架构(一)——requirejs + angular + angular-route

1112
来自专栏情情说

Netty事件监听和处理(上)

陪产假结束了,今天又开始正常上班了,正好赶上米粉节活动,又要忙上一阵了,米粉节活动时间为4.03 - 4.10,有不少优惠,感兴趣的可以关注mi.com或小米商...

36611
来自专栏iKcamp

iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 解析JSON

视频地址:https://www.cctalk.com/v/15114923886141 JSON 数据 我颠倒了整个世界,只为摆正你的倒影。 前面的文章中,...

3709

扫码关注云+社区