2

在 Websphere MQ 中,我们可以使用队列的 CURDEPTH 属性轻松找出本地队列中有多少条消息。

但是我怎样才能找到这些消息占用的实际磁盘空间呢?由于队列中的消息可能具有不同的大小,即它们可能占用不同的磁盘空间。

提前致谢。

4

3 回答 3

1

磁盘上“队列”文件的名称不完全映射到队列名称。

  1. 对于使用旧版本 IBM MQ 创建的普通队列,将在队列名称中的字符替换为q的目录中调用该文件。/var/mqm/qmgrs/QMGR/queues/QUEUE_NAME.!
  2. 对于使用较新版本的 MQ(我相信是 7.5 及更高版本)创建的普通队列,实际文件被调用/var/mqm/qmgrs/QMGR/queues/QUEUE_NAME,其中.队列名称中的字符被替换为!,它不再是一个目录,其文件名为q.
  3. 对于动态队列,目录或文件名根本不包含实际的动态队列名称,并且类似于!!GHOST!DEADBEEF!0!DEADBEEF!99.

要查找队列文件的确切位置,请使用dspmqfls以下示例中的命令:

dspmqfls -m QMGR -t ql SYSTEM.DEFAULT.LOCAL.QUEUE

输出将如下所示:

WebSphere MQ Display MQ Files

QLOCAL    SYSTEM.DEFAULT.LOCAL.QUEUE
/var/mqm/qmgrs/QMGR/queues/SYSTEM!DEFAULT!LOCAL!QUEUE

请注意,无论位置是目录还是实际文件,输出都是相同的。如果你检查它是一个目录,你可以在目录中查找名为 的文件q,如果它是一个实际的“队列”文件。

队列目录示例:

$ls -ld /var/mqm/qmgrs/QMGR/queues/SYSTEM!DEFAULT!LOCAL!QUEUE
drwxrwx--- 2 mqm mqm 96 Apr  7  2010 /var/mqm/qmgrs/QMGR/queues/SYSTEM!DEFAULT!LOCAL!QUEUE

队列文件示例:

$ls -ld /var/mqm/qmgrs/QMGR/queues/SYSTEM!DEFAULT!LOCAL!QUEUE
-rw-rw---- 1 mqm mqm 2048 Jul 19 2016 /var/mqm/qmgrs/QMGR/queues/SYSTEM!DEFAULT!LOCAL!QUEUE

注意适用于 IBM MQ v7.5.0.0 至 7.5.0.5 的APAR IT09611可能会导致某些队列文件名被截断,这在 7.5.0.6 中已修复。

于 2017-07-20T00:35:40.750 回答
0

您查看队列文件的大小以确定队列中所有消息占用的磁盘空间。队列文件将位于 /qmgrs//queues 文件夹下。队列文件名将与队列名称相同。

于 2013-06-18T08:46:56.740 回答
0

谢谢沙希。对于其他人,队列文件的完整路径是 /var/mqm/qmgrs/QMANAGER_FOLDER/queues/QUEUE_You_Want/q

QMANAGER_FOLDER - 队列管理器目录
QUEUE_You_Want - 您正在寻找的队列。

文件“q”的大小足以确定队列占用的总磁盘空间。因此,如果文件系统由于某些队列消息而变满,我们可以确定哪个队列从这里占用了多少磁盘空间。

于 2013-06-19T08:18:58.160 回答