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 条评论
登录 后参与评论

相关文章

来自专栏你不就像风一样

深入理解Spring Boot数据源与连接池原理

在使用Spring Boot数据源之前,我们一般会导入相关依赖。其中数据源核心依赖就是spring‐boot‐starter‐jdbc 如下

7593
来自专栏有趣的Python

9- vue django restful framework 打造生鲜超市 -用户登录和手机注册(上)

Vue+Django REST framework实战 搭建一个前后端分离的生鲜超市网站 Django rtf 完成 手机注册和用户登录(上) drf的...

62912
来自专栏Linyb极客之路

Web安全漏洞之XSS攻击

XSS(Cross-Site Scripting)又称跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行。XSS是一种经常出现在 Web 应用程序中的计算机...

763
来自专栏运维前线

一小时上手SaltStack

saltstack 常用命令 查看所有的KEYS salt-key –list-all 接受一个特定的钥匙 salt-key –accept=key-name ...

2279
来自专栏java思维导图

Web 安全漏洞之 XSS 攻击

编者说:作为JS系工程师接触最多的漏洞我想就是 XSS 漏洞了,然鹅并不是所有的同学对其都有一个清晰的认识。今天我们请来了@卢士杰 同学为我们分享他眼中的 XS...

772
来自专栏张善友的专栏

SQL Service Broker External Activator

在许多情况下,消息一到达队列就对它们进行处理,这种做法是合适的。在Service Broker应用程序中,你可以指定一个存储过程或者外部应用程序,只要有消息到达...

1959
来自专栏Python攻城狮

MongoDB与python交互1.Pymongo2.安装3.使用4.mongoDB其它操作5.Mongodb与python交互6.完成命令行项目:学生信息管理(基于Python2.7)

PyMongo是Mongodb的Python接口开发包,是使用python和Mongodb的推荐方式。

1123
来自专栏LinkedBear的个人空间

初试RocketMQ消息中间件 原

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间...

1224
来自专栏GopherCoder

『Ansible + Reclass 更好的运维』

3335
来自专栏Spark学习技巧

Kafka源码系列之0.10版本的Producer源码解析及性能点讲解

一,基础讲解 本文是基于kafka 0.10讲的,kafkaProducer模型和0.8的客户端模型大致是一样的,区别是0.8版本的会为每个Broker(有给定...

2319

扫码关注云+社区