西班牙
斯潘4
大家好!
我们目前正在使用fme服务器构建一个工作流,以自动方式处亚搏在线理相对较大的数据集。我们将并行运行多个工作区。
当我们在基于Windows Server 2012的FME 2016.1.1服务器上运行具有大型读取器数据集(600000多个功能)的工作区时,我们观察到引擎线程将消耗系统上的所有内存,然后Windows将开始将内存交换到性能较差的页文件。
我们在fme桌面上并没有观察到同样的内存占用问题-这里的内存使用量与可用的物理内存保持更为相称的大小。
这导致了一些问题:
1)我们如何才能最好地确定工作区使用如此多内存的原因?
2)我们如何验证这是“正确”的行为,而不是例如。内存泄漏?
3)我们如何开始优化工作区的性能-无论是修改工作区还是修改工作区在服务器上的运行方式?
4)FME服务器是否解释来自工作区标题的设置,例如。fme_engine_memory_redline和fme_profile_result_csv
5)在FME服务器中,发动机仅用一个-“为了”`-fme_engine_memory_redline'`0.5''参数?(所有其他命令行参数以“--“–日志文件就是这样显示的?
6)应如何在具有4个或更多引擎的FME服务器上配置FME引擎或内存红线?
7)我们在两台FME服务器的日志文件中看到一些关于内存限制的奇怪行为-发生了什么?以下内容:
服务器A:
2016-08-29 15:46:20 0.2 0.0通知FME配置:过程限制为32.00 GB物理记忆以及128.00 TB的地址空间
2016-08-29 15:46:20 0.2 0.0通知FME配置:开始释放进程使用时的内存超过96.00 GB内存或128.00 TB地址空间
2016-08-29 15:46:20 0.2 0.0通知FME配置: 停止释放进程使用率为 低于72.00 GB内存和96.00 TB地址空间8)33在10点45分23秒FME配置INFORM 0.0 0.2今天:过程限制是8.00 GB物理内存以及128.00 TB的地址空间
34今天10:45:23通知0.0 0.2 FME配置:开始释放进程使用时的内存超过39.74 MB内存或128.00 TB地址空间
35今天10:45:23通知0.0 0.2 FME配置:停止释放进程使用率为低于38.15 MB内存和96.00 TB地址空间
我想知道你是否能给我们发送一份这个工作流程的复制品(数据,工作区)?亚搏在线如果我们能在保险箱里复制这张照片,看看能不能有所改进,那就太好了。亚搏在线请在创建案例https://www.亚搏在线safe.com/support/支持/任何你认为有用的信息。
我认为@1空间大道很好,应该会有帮助。很抱歉听说你遇到了这些问题。
布瑞恩
这些问题总是很棘手。我建议在进程中运行一些特性,并打开断点,以尝试确定特性的瓶颈所在。显然,如果您能够避免瓶颈,您将能够让特性在整个过程中自由流动,直接指向作者。
正如您所提到的,如果可行,您可以拆分流程,在流程1的末尾写入ffs,在流程2中读取ffs,使用workspacerunner链接流程。或者,您可以尝试将所有数据部分缓存到磁盘,从而将其从内存中转储,记录器将允许您在“录制”模式下执行此操作,然后取样器将您传递到播放机的单个触发器功能采样,以读取刚刚写出的ffs文件的内容。现在,使用featurereader和featurewriter要简单得多,但我不确定在您的构建中是否有featurewriter。
我想这个可能需要升级到您的经销商或直接到保险箱作为支持票。亚搏在线
更新:在上面提到的服务器上,我们已经完全禁用了交换(目前)。我们注意到C上的空间用完了,所以增加了两次。最终我们发现这台机器使用了大于50GB的交换(服务器有48GB的RAM)。表演当然很糟糕。
禁用swap之后,fme引擎进程表现得更好(性能更好),但是现在当aixm编写器(收集了所有要编写的功能)开始生成xml文件时,我们遇到内存不足的问题,当然这会使整个作业失败。:。(
所以,要么我们有交换,似乎被消耗到我们限制的任何大小,要么(和?)然后,在最后的步骤中,fme引擎有时会因为内存不足而失败。
最重要的是,我们看到fme服务器核心和应用服务器“服务”的挂起和失败,结果是重新启动和中断运行的作业。
欢迎提出任何建议。
疯狂的想法:有没有办法在编写器启动之前触发fme引擎垃圾收集?我敢肯定,在引擎进程消耗的10-12GB数据中,有相当大的一部分不是“活动”数据。
可能不那么疯狂的想法是:我们应该让我们的工作空间最初写入ffs,然后让另一个工作空间执行最后的ffs->aixm步骤吗?
谨致问候,
H_kan公司
你好。我当然可以在日志文件中插入一个奇怪的地方。我也有这样的留言:
进程限制为:当进程使用量超过71.99 GB内存时,24.00 GB物理内存和8.00 TB地址空间开始释放内存;当进程使用量低于53.99 GB内存和6.00 TB地址空间时,8.00 TB地址空间停止释放内存;
…想知道当我的机器只安装了24GB时,FME怎么可能使用72GB的内存。
我们的一个开发人员告诉我:
我们在这些信息中使用了三个术语:
-物理内存:你的机器有多少内存。
-内存:进程正在使用的内存量。这包括ram中的数据和操作系统分页到磁盘的数据,这就是为什么它可以大于物理内存的原因。
-地址空间:进程当前可用的内存量。请求更多内存可能会导致此情况增加。当程序变得太大时,内存不足。
注意,进程限制消息指的是“物理内存”,它不同于启动/停止消息中更一般的“内存”。
我知道这看起来有误导性,但我不想让他们把那些信息弄得如此复杂以至于毫无意义。无论如何,在开始/停止内存消息低于物理内存之前调整红线是不必要的,我不知道我会推荐它。
事实上,我真的不确定我是否会触及红线设置,至少在排除所有其他可能的问题之前不会。你能给我完整的日志文件吗a)工作区在桌面上运行,b)工作区在服务器上运行,不需要任何红线变更?这样我可以检查是否还有其他明显的差异。把它们贴在这里或发电子邮件给我(马克。爱尔兰@亚搏在线safe.com网站)
以MB而不是GB为单位的消息很有趣。我怀疑服务器上的8GB内存不会削减为“处理相对较大的数据集”和“并行运行多个工作区”。我的意思是,有一个操作系统需要考虑,你运行的是windows服务器,我怀疑它本身就是一个内存占用器。我正在运行Windows7,即使关闭了除此浏览器以外的所有功能,系统内存使用也超过10GB。所以可能是日志是正确的,fme实际上只剩下几个mb可以使用。你能检查一下任务管理器,看看有多少可用内存吗?
我希望这能有帮助。一般来说,桌面和服务器都使用同一个底层引擎,在同一个系统上给定相同的参数应该会得到几乎相同的结果。我想你是在桌面和服务器上使用64位fme?
马克爱尔兰
产品传道者
亚搏在线安全软件
好吧,现在我们已经部分解决了这个问题。
但是引擎内存分配功能似乎有点奇怪。
正如我所展示的,引擎可以占用96GB的32GB内存:
2016-08-29 15:46:20 0.2 0.0通知FME配置:过程限制为32.00 GB物理记忆地址空间为128.00 TB 2016-08-29 15:46:20 0.2 0.0通知FME配置:开始释放进程使用时的内存超过96.00 GB内存或128.00 TB地址空间
2016-08-29 15:46:20 0.2 0.0通知FME配置:停止释放进程使用率为低于72.00 GB内存和96.00 TB地址空间
我们现在已经在fmeengineconfig文件中将fme_engine_memory_红线更改为0.08。
(我们在这方面有点困难——也因为我们通过标题设置参数)。
现在我们得到了一个更可用的每引擎内存分配:
33今天12:23:01通知0.0 0.2 fme_engine_memory_redline设置为0.08分
34今天12:23:01通知0.0 0.2 FME配置:过程限值为32.00 GB物理内存以及128.00 TB的地址空间
35今天12:23:01通知0.0 0.2 FME配置:开始释放进程使用时的内存超过15.36 GB内存或20.48 TB地址空间
36今天12:23:01通知0.0 0.2 FME配置:停止释放进程使用率为低于11.52 GB内存和15.36 TB地址空间
我们可能需要进一步调整这个参数,以允许多个engien同时运行。
我也在考虑使用作业路由和作业定位来配置“高内存”引擎和一些较低的引擎。
我们仍然不明白为什么我们会在另一台服务器上看到标准fme_engine_memory_redline 0.5的mb(而不是gb)顺序中的数字:
33今天10:45:23通知0.0 0.2 FME配置:过程极限为8.00 GB物理内存以及128.00 TB的地址空间
34今天10:45:23通知0.0 0.2 FME配置:开始释放进程使用时的内存超过39.74 MB内存或128.00 TB地址空间
35今天10:45:23通知0.0 0.2 FME配置:停止释放进程使用率为低于38.15 MB内存和96.00 TB地址空间
这是一个潜在的错误,我们正在看到或这是预期的行为?
您好!@麦芽酒商-这是一个很大的话题,无疑会产生很多回应。如果我调试这个,我首先要确保我对fme desktop中工作区的设置感到满意,我要确保的关键是峰值内存使用率尽可能低,并且我在日志中从未看到“优化资源使用率”语句(这并不好,因为这意味着你在分页内存)。
这里有很多建议:
https://knowledge.亚搏在线safe.com/articles/579/performance-tuning-fme.html?智能空间=性能调整
……还有我们的一些网络研讨会:
https://youtu.be/jtievi4thhi?列表=plptavfhrhqt2pbxyxf4dugnz0t_008vs-
调整fme流程性能的技巧
和
https://www.youtube.com/watch?v=kydczhc40ca∈dex=3&list=plptavffhrhqt2pbxyxf4dugnz0t_008vs-调整fme以实现快速数据处理
一旦工作区尽可能紧凑,就在安装fme服务器的同一台计算机上的fme桌面上测试这个过程。然后,这将包括与机器设置相关的测试中的环境问题。如果你把这个过程升级到fme服务器,然后得到一个不同的结果,那么有希望看到一些东西是罪魁祸首。
就fme服务器安全软件的内存红线而言,在2015年之前,他们使用的第三方内存管理库确实存在一些问题,这迫使他亚搏在线们对64位fme设置内存上限。不过,这一问题现在已经基本解决了,尽管我相信内存上限仍然存在,尽管它相当高。希望外管局的人能澄清这一点。亚搏在线
我相信fme_engine_memory_redline参数允许您删除该帽,如中所述
http://fmepedia.亚搏在线safe.com/articles/how嫒o/how-to-control-fme-server-engine-memory-usage
亚搏在线外管局之前告诉过我:“增加的内存限制应该给你更好的性能,如果在资源管理器永远不会踢,但如果它确实踢会给你的表现显著恶化。如果你想全力以赴,你可以设置FME_ENGINE_MEMORY_REDLINE为1.0,资源管理器将 never kick in and you'll likely get the best performance, but you may run out of memory."
?2019安全亚搏在线软件公司|合法的