Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ibm mq websphere mq中的队列存储文件系统已满_Ibm Mq - Fatal编程技术网

Ibm mq websphere mq中的队列存储文件系统已满

Ibm mq websphere mq中的队列存储文件系统已满,ibm-mq,Ibm Mq,在linux环境中,我们遇到了一个磁盘空间被空队列占用的场景 文件系统已满,队列管理器意外结束,我们需要清空q文件以恢复队列管理器 但事实上,我们并没有任何消息在队列中。这显示了一个特殊的rl队列 为什么磁盘空间保存在这里?根本原因是什么?WMQ不会实时收缩队列文件。例如,一个队列中有100条消息,您使用第一条消息。WMQ不会收缩文件并将所有消息上移一个位置。如果它试图对每条消息都这样做,您将永远无法获得当前在产品中看到的吞吐量 实际情况是,WMQ将在处理生命周期的某些点收缩队列文件。队列变为空

在linux环境中,我们遇到了一个磁盘空间被空队列占用的场景

文件系统已满,队列管理器意外结束,我们需要清空q文件以恢复队列管理器

但事实上,我们并没有任何消息在队列中。这显示了一个特殊的rl队列


为什么磁盘空间保存在这里?根本原因是什么?

WMQ不会实时收缩队列文件。例如,一个队列中有100条消息,您使用第一条消息。WMQ不会收缩文件并将所有消息上移一个位置。如果它试图对每条消息都这样做,您将永远无法获得当前在产品中看到的吞吐量

实际情况是,WMQ将在处理生命周期的某些点收缩队列文件。队列变为空与队列下的文件收缩之间存在一定的延迟,但此延迟通常很小,以至于无法察觉

你所描述的事件在理论上可能发生在某些非常特殊的条件下,但这将是极为罕见的。事实上,在我使用WMQ的15年中,我只见过几个实例,其中缩小队列文件的延迟甚至很明显。我猜这里实际发生的是你的一个假设或观察是错误的。例如:

队列实际上是空的吗

  • 在你把文件吹走后,队列肯定是空的。在你把文件吹走之前,你怎么知道它是空的
  • 如果任何队列上存在非持久性消息,则QMgr重新启动后该队列将为空。这是另一种情况,队列在QMgr重新启动后可能看起来是空的,但在发生故障时不是空的
  • 如果从syncpoint下的队列检索到消息,则队列深度将递减,但该消息在队列文件中仍处于活动状态。如果队列在单个事务中被清空,它将保留其完整深度,直到提交发生。这会使队列看起来像是空的,而实际上不是空的
实际上是队列文件填满了文件系统吗

  • 日志扩展数据块可以填充文件系统,即使使用循环日志也是如此。例如,如果辅助扩展数据块的值较大,日志文件可能会显著扩展,然后很快消失
  • FDC文件可以填充文件系统,具体取决于分配的方式
甚至是MQ吗

  • 如果QMgr与其他用户或应用程序共享文件系统空间,则临时文件可能会填满该空间
我们经常看到的一个问题是,应用程序将尝试在队列中放置5000多条消息,并收到一个QFULL错误。大多数人首先要做的就是设置MAXDEPTH(999999999),以确保这种情况不再发生。问题是QFULL是一个软错误,应用程序可以从中恢复,但填充文件系统是一个硬错误,可能导致整个QMgr崩溃。设置MAXDEPTH(999999999)将可管理的软错误替换为致命错误。MQ管理员负责确保队列上的MAXDEPTH和MAXMSGL设置为不填充底层文件系统。在大多数商店中,在所有文件系统上都有额外的监控,以便在文件系统填满之前发出警报

总之,在大多数情况下,WMQ在收缩队列文件方面做得非常好。特别是,当队列清空时,这是一个自然的同步点,在该点上文件可以收缩,并且通常在队列清空后的几秒钟内发生。您要么遇到了一个罕见的竞争条件,即文件收缩不够快,要么这里发生了一些在您最初的分析中并不明显的事情。在任何情况下,都要管理MAXDEPTH和MAXMSGL,这样就没有队列可以填满文件系统并编写代码来处理QFULL条件