SAP PI PO 接口常见问题处理:队列平衡的统计平均分配
场景描述
异步 XI 消息的处理由 qRFC 条目的处理开始。qRFC 条目在 n 个并行队列中,分配基于随机算法。这意味着队列中的条目可能分配不均,即队列积压。队列积压可能有另一个原因,即队列条目在处理期间出错,随即冻结队列。
要避免或移除队列积压,必须满足以下两个条件:
•条目平均分配到 n 个并行队列。
•如果存在队列积压,则只会在条目较少的队列中调度新条目。
配置
参数 EO_QUEUE_BALANCING_READ
•参数 EO_QUEUE_BALANCING_READ 和参数 EO_QUEUE_BALANCING_SELECT 一同控制 EO 消息在队列中的分配,消息的数量由参数 EO_OUTBOUND_PARALLEL、EO_INBOUND_PARALLEL_SENDER 和 EO_INBOUND_PARALLEL 确定。如果参数的值是 0,则消息将在可用的队列中随机分配。这是缺省设置。不过,如果消息没有在队列中均匀分配,那么这将由该参数来抵消。如果 EO_QUEUE_BALANCING_READ 设置为值 n 且 n 大于零,那么平均来说,队列的当前填充级别将在每第 n 个消息后确定,并将存储在应用程序服务器的共享内存中。这些数据是确定队列的基础(请参阅参数 EO_QUEUE_BALANCING_SELECT 的描述)。值得注意的是,确定填充级别时需要进行数据库访问,因此会影响系统性能。所以,应根据消息的吞吐量和具体要求或均匀分配来确定 EO_QUEUE_BALANCING_READ 的值。
参数 EO_QUEUE_BALANCING_SELECT
•仅当参数 EO_QUEUE_BALANCING_READ 不等于 0,即处于活动状态时,此参数才有效。消息将继续随机分配到 EO 队列中。这些队列由此参数定义。它将队列的相对填充级别指定为百分比形式。相对这里指相对于最大填充队列。如果某些队列的填充级别低于这里定义的级别,那么仅考虑将这些队列进行分配。如果所有队列的填充级别都比较高,那么将考虑所有队列。相对填充级别的计算取决于受参数 EO_QUEUE_BALANCING_READ 影响的功能所确定的数据。
缺省值
•使用以下 ABAP XI 参数激活统计平衡:
•TUNING EO_QUEUE_BALANCING_READ 20
•TUNING EO_QUEUE_BALANCING_SELECT 80
注释:
该建议在新生成大约 20 条 XI 消息后为 XI 运行时生成新统计。统计平衡的配置必须使用场景优化。这意味着必须为许多 XI 消息增加值 TUNING EO_QUEUE_BALANCING_READ 以提高性能。