Java长时间运行的线程:由于对MII调度程序有影响,如何避免使用它们?

2020-08-21 14:26发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,我们在MII调度程序上遇到问题。 在系统处于活动状态之后,不会将收益确认发送给Erp,并且不会执行任何异步任务:看来调度程序已挂起。 实际上,我们发现调度程序处于运行状态,从不改变状态。 下次运行时间是过去的时间,并且保持不变。 即使我们逐个作业禁用和重新启用作业,作业也会恢复为运行状态,并且不会处理任何消息。 要将Java实例恢复到运行状态,我们必须重新启动它。 我们意识到,当存在多个长时间运行的托管应用程序线程时,或大约在三十个时,或多或少会发生此问题。 请注意,这些运行时间长的线程也都专用于为一个确定的用户服务(从MMC我们看到一个ID号),但是我们不知道去哪里查看它是哪个用户,了解谁以及为什么需要它。 专用线程。 在日志中,我们没有在线程分配给ID或上次更新的时间间隔中发现特定错误。
请参见附件。
有人可以帮助我了解我的情况 MII/ME系统?
谢谢!

java-long-running.jpg java-long-running.jpg (164.4 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,我们在MII调度程序上遇到问题。 在系统处于活动状态之后,不会将收益确认发送给Erp,并且不会执行任何异步任务:看来调度程序已挂起。 实际上,我们发现调度程序处于运行状态,从不改变状态。 下次运行时间是过去的时间,并且保持不变。 即使我们逐个作业禁用和重新启用作业,作业也会恢复为运行状态,并且不会处理任何消息。 要将Java实例恢复到运行状态,我们必须重新启动它。 我们意识到,当存在多个长时间运行的托管应用程序线程时,或大约在三十个时,或多或少会发生此问题。 请注意,这些运行时间长的线程也都专用于为一个确定的用户服务(从MMC我们看到一个ID号),但是我们不知道去哪里查看它是哪个用户,了解谁以及为什么需要它。 专用线程。 在日志中,我们没有在线程分配给ID或上次更新的时间间隔中发现特定错误。
请参见附件。
有人可以帮助我了解我的情况 MII/ME系统?
谢谢!

java-long-running.jpg java-long-running.jpg (164.4 kB)
付费偷看设置
发送
6条回答
太Q了
1楼-- · 2020-08-21 15:13

我们隔离了该问题,并且可能发现了一个我们设法绕过的Sap错误。 问题在于通过Adobe在Java中进行打印:如果Windows出现任何问题(由驱动程序问题或类似原因引起),应用程序将挂起,无法捕获异常以过早关闭线程; 您必须始终重新启动实例以删除挂起的线程。 因此,如果应用程序是异步的,则调度程序会在一段时间后停止(因为正在达到最大活动线程数?在哪里检查最大活动异步线程数是否有限制?)我们将应用程序更改为具有同步打印,将 问题到其他类型的线程。 在未来的将来,我们将修改打印应用程序以保留永久的Adobe服务,并通过http post直接将流发送到打印机。 感谢您的帮助

Baoming ROSE
2楼-- · 2020-08-21 15:10

嗨罗曼诺,

感谢您的解释。 另一个问题是为什么要异步? 出于打印目的,它正在发送输出,也许您不希望作业等待打印完成,但是异步操作似乎带来的问题多于收益(以我的经验)。 只是要考虑的想法。 如果存在问题,同步将在突出显示方面做得更好。

干杯,迈克

Baoming ROSE
3楼-- · 2020-08-21 14:55

也许答案在于弄清为什么作业要运行这么长时间?

  • 首先要查看的地方是日志记录(即删除大部分或全部记录)。
  • 第二个是多次往返于ERP或数据库或PCo的行程,一个人可以打一个电话传递所有必要的信息。 也许将所有数据聚合在一起再传递给BAPI/RFC是一个合理的解决方案。
  • 第三步是查看需要从ERP或数据库或PCo传递或返回多少数据。 尝试放置过滤器以限制数据。
  • 您使用什么RFC或BAPI将收益确认发送到ERP? 定制的BAPI/RFC是否值得投资?

致谢,迈克

空代码
4楼-- · 2020-08-21 14:51

谢谢您的贡献,迈克

打个大熊猫
5楼-- · 2020-08-21 15:13
< p>你好迈克,

1。 我们没有看到任何日志条目(处于错误级别等等)

2。 我们每半小时汇总一次所有数据(相关选项)

3。 我们将很少的数据传递给erp。 通常要确认件数。 消费将由Erp通过反冲完成

4。 我们使用std bapi

无论如何,我们不了解的是:

1。 为什么调度程序停止执行; 有很多不同的工作/不同的任务。 我可以接受调度程序停止一个作业/一个程序,但不能停止所有作业/一个不同的程序,但不能异步请求

2。 我们从任何地方都看不到什么是长时间运行的托管应用程序线程(谁启动了它,正在做什么,如何杀死它)。 我们不知道去哪儿去看哪个消费者,也不知道谁和为什么需要专用线程。

3。 我们不知道长时间运行的托管应用程序线程是否有限制(多少个)。 当我们大约30点到达时,我们必须重新启动Java实例

致谢

SAP小黑
6楼-- · 2020-08-21 15:10

也许您需要检查Java最大线程数? 如果您只有几个(5或10?)并且同时有更多作业在运行,则可能是原因。

您是否已将调度程序"事务持久性"设置为"始终"? 虽然我没有遇到任何问题,但同事遇到了与此设置保留的数据量有关的问题。 更改为On Error将大大减少保留的事务数据量。

让NW Admin检查NW中的日志文件以查看它们是否已满,并请他们检查总体设置。 他们可能还会看到其他导致问题的信息。

"我们每半小时汇总一次所有数据(相关选项)":我不明白此语句的含义。 您是指ECC的主数据更新吗? 如果您要进行完全刷新而不是使用ECC更改指针,则这可能会使系统严重瘫痪。 尤其是在通过材料主数据(MATMAS IDoc)和/或其他大型数据集进行传输的情况下。 如果您是通过请求(BAPI/RFC)而不是请求(IDocs)进行更新,则这是一个改进的机会,尤其是与ECC更改指针结合使用时。

能否提供以下列表: 正在运行的工作及其作用是什么? 特别是那些每小时运行一次或更频繁的运行。 也许可以选择检查并减少工作频率。

麦克,

一周热门 更多>