Ibm mq websphere mq中的队列存储文件系统已满
在linux环境中,我们遇到了一个磁盘空间被空队列占用的场景 文件系统已满,队列管理器意外结束,我们需要清空q文件以恢复队列管理器 但事实上,我们并没有任何消息在队列中。这显示了一个特殊的rl队列Ibm mq websphere mq中的队列存储文件系统已满,ibm-mq,Ibm Mq,在linux环境中,我们遇到了一个磁盘空间被空队列占用的场景 文件系统已满,队列管理器意外结束,我们需要清空q文件以恢复队列管理器 但事实上,我们并没有任何消息在队列中。这显示了一个特殊的rl队列 为什么磁盘空间保存在这里?根本原因是什么?WMQ不会实时收缩队列文件。例如,一个队列中有100条消息,您使用第一条消息。WMQ不会收缩文件并将所有消息上移一个位置。如果它试图对每条消息都这样做,您将永远无法获得当前在产品中看到的吞吐量 实际情况是,WMQ将在处理生命周期的某些点收缩队列文件。队列变为空
为什么磁盘空间保存在这里?根本原因是什么?WMQ不会实时收缩队列文件。例如,一个队列中有100条消息,您使用第一条消息。WMQ不会收缩文件并将所有消息上移一个位置。如果它试图对每条消息都这样做,您将永远无法获得当前在产品中看到的吞吐量 实际情况是,WMQ将在处理生命周期的某些点收缩队列文件。队列变为空与队列下的文件收缩之间存在一定的延迟,但此延迟通常很小,以至于无法察觉 你所描述的事件在理论上可能发生在某些非常特殊的条件下,但这将是极为罕见的。事实上,在我使用WMQ的15年中,我只见过几个实例,其中缩小队列文件的延迟甚至很明显。我猜这里实际发生的是你的一个假设或观察是错误的。例如: 队列实际上是空的吗
- 在你把文件吹走后,队列肯定是空的。在你把文件吹走之前,你怎么知道它是空的
- 如果任何队列上存在非持久性消息,则QMgr重新启动后该队列将为空。这是另一种情况,队列在QMgr重新启动后可能看起来是空的,但在发生故障时不是空的
- 如果从syncpoint下的队列检索到消息,则队列深度将递减,但该消息在队列文件中仍处于活动状态。如果队列在单个事务中被清空,它将保留其完整深度,直到提交发生。这会使队列看起来像是空的,而实际上不是空的
- 日志扩展数据块可以填充文件系统,即使使用循环日志也是如此。例如,如果辅助扩展数据块的值较大,日志文件可能会显著扩展,然后很快消失
- FDC文件可以填充文件系统,具体取决于分配的方式
- 如果QMgr与其他用户或应用程序共享文件系统空间,则临时文件可能会填满该空间