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

相关文章

来自专栏Sorrower的专栏

内核必须懂(二): 文件系统初探

613
来自专栏玩转JavaEE

Spring Cloud中Feign配置详解

到目前为止,小伙伴们对Feign的使用已经掌握的差不多了,我们在前文也提到Feign是对Ribbon和Hystrix的整合,那么在Feign中,我们要如何配置R...

4654
来自专栏有趣的Python

Scrapy分布式爬虫打造搜索引擎-(八)elasticsearch结合django搭建搜索引擎Python分布式爬虫打造搜索引擎

Python分布式爬虫打造搜索引擎 基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站 八、elasticsear...

3416
来自专栏沈唁志

PHP进阶之利用Swoole实现一个简单的WebSocket多人聊天室

其实这个聊天室的DEMO我早都发到Github上了,之前学习Swoole的时候就已经练过手了

952
来自专栏QQ音乐技术团队的专栏

ContentProvider简介

(一) 基础知识 Content Provider属于Android四大组件之一,相比较而言,它更侧重于共享数据。Android的数据存储方式有以下几种:...

2006
来自专栏SDNLAB

基于Ryu打造自定义控制器

控制器是SDN网络中最重要的组成部分。在开发SDN应用时,需要基于某一个控制器开发,而大部分开源控制器都是一个框架或者平台,更多个性化的设置和应用需要开发者自己...

3616
来自专栏码匠的流水账

nginx http模块配置参数解读

本文主要解析一下nginx http模块配置参数。主要分socket相关参数,对clinet请求的buffer参数以及对response的buffer参数。

732
来自专栏技术专栏

Spring AOP 前置增强拦截不到

最近在用AOP写一个在添加操作前统一配置创建人创建时间等基本信息的功能,但是发现无论如何都拦截不到该有的请求

952
来自专栏Dawnzhang的开发者手册

@Component注解的解析

今天在写程序的时候看见一个以前没有见过的注解(@Component),在网上查找过后,经过实践,决定把它记录下来。

603
来自专栏小筱月

Java web 前端面试知识点总结

耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口...

972

扫码关注云+社区