当前位置: 首页 > news >正文

php网站后台建设营销型网站设计房地产

php网站后台建设,营销型网站设计房地产,wordpress 回到首页,定制小程序制作平台内存模型 因为 TaskManager 是负责执行用户代码的角色#xff0c;一般配置 TaskManager 内存的情况会比较多#xff0c;所以本文当作重点讲解。根据实际需求为 TaskManager 配置内存将有助于减少 Flink 的资源占用#xff0c;增强作业运行的稳定性。 TaskManager 内…内存模型 因为 TaskManager 是负责执行用户代码的角色一般配置 TaskManager 内存的情况会比较多所以本文当作重点讲解。根据实际需求为 TaskManager 配置内存将有助于减少 Flink 的资源占用增强作业运行的稳定性。 TaskManager 内存模型如下。 如上图所示下表中列出了 Flink TaskManager 内存模型的所有组成部分以及影响其大小的相关配置参数。 我们可以看到有些内存部分的大小可以直接通过一个配置参数进行设置有些则需要根据多个参数进行调整。 接下来我们详细来看一下各个内存区域的含义、技术原理以及 Flink 对它的默认值在什么场景下需要调整。 内存配置 下图的左边标注了每个区域的配置参数名右边则是一个调优后的、使用 HashMapStateBackend 的作业内存各区域的 容量限制它和默认配置的区别在于 Managed Memory 部分被主动调整为 0 后面我们会讲解何时需要调整各区域的大小以最大化利用内存空间。 JVM 进程总内存Total Process Memory 该区域表示在容器环境下 TaskManager 所在 JVM 的最大可用的内存配额超用时可能被强制结束进程。我们可以通 过 taskmanager.memory.process.size 参数控制它的大小。 例如我们设置 JVM 进程总内存为 4G TaskManager 运行在 YARN 平台如果 yarn.nodemanager.pmem - check- enabled 设为 true 则也会在运行时定期检查容器内的进程是否超用内存。 如果进程总内存用量超出配额容器平台通常会直接发送最严格的 SIGKILL 信号相当于 kill - 9 来中止 TaskManager此时不会有任何延期退出的机会可能会造成作业崩溃重启、外部系统资源无法释放等严重后果。 因此在有硬性资源配额检查 的容器环境下请务必妥善设置该参数对作业充分压测后尽可能预留一部分安全余量避免 TaskManager 频繁被 KILL 而导致的作业频繁重启。 Flink 总内存Total Flink Memory 该内存区域指的是 Flink 可以控制的内存区域即上述提到的 JVM 进程总内存 减去 Flink 无法控制的 Metaspace 元空 间和 Overhead 运行时开销区域。 Flink 随后又把这部分内存区域划分为堆内、堆外 Direct 、堆外 Managed 等 不同子区域后面我们会逐一讲解他们的配置指南。 对于没有硬性资源限制的环境我们建议使用 taskmanager.memory.flink.size 参数来配置 Flink 总内存的大 小然后 Flink 自己也会自动根据参数计算得到各个子区域的配额。如果作业运行正常则无需单独调整。 例如 4G 的 进程总内存 配置下 JVM 运行时开销 Overhead 占 进程总内存 的 10% 但最多 1G 下图是 409.6M 元 空间Metaspace 占 256M 堆外直接 Direct 内存网络缓存占 Flink 总内存 的 10% 但最多 1G 下图是 343M 框架堆 和框架堆外各占 128M 堆外管控 Managed 内存占 Flink 总内存 的 40% 下图是 1372M 即 1.34G 其他空间留给任务堆即用户程序代码可以使用的内存空间1459M 即 1.42G 。 JVM 堆内存JVM Heap Memory 堆内存大家想必都不陌生它是由 JVM 提供给用户程序运行的内存区域 JVM 会按需运行 GC 垃圾回收器协助 清理失效对象。 当任务启动时 ProcessMemoryUtils#generateJvmParametersStr 方法会通过 - Xmx - Xms 参数设置堆内存的最大容量。 Flink 将堆内存从逻辑上划分为 ” 框架堆 “ 、 ” 任务堆 “ 两个子区域分别是 框架堆内存 Framework Heap Memory taskmanager.memory.framework.heap.size 默认是 128m 任务堆内存 Task Heap Memory taskmanager.memory.task.heap.size 如果未显式设置其大小则会通过 扣减其他区域配额来计算得到。例如对于 4G 的进程总内存扣除了其他区域后任务堆可用的只有不到 1.5G 。 但需要注意的是 Flink 自身并不能精确控制框架自身及任务会用多少堆内存因此上述配置项只提供理论上的计算依 据。如果实际用量超出配额且 JVM 难以回收对象释放空间则会抛出 OutOfMemoryError 此时 Flink TaskManager 会退 出导致作业崩溃重启。因此对于堆内存的监控是必须要配置的当堆内存用量超过一定比率或者 Full GC 时长和次数明显增长时需要尽快介入并考虑扩容。 对于使用 HashMapStateBackend 旧版本称之为 FileSystem StateBackend 的流作业用户如果在进程总内存固定的 前提下希望尽可能提升任务堆的空间则可以减少托管内存 Managed Memory 的比例。 JVM 堆外内存JVM Off-Heap Memory 广义上的 堆外内存 指的是 JVM 堆之外的内存空间而我们这里特指 JVM 进程总内存除了元空间 Metaspace 和运行 时开销Overhead 以外的内存区域。因为上述两个区域是 JVM 自行管理 Flink 无法介入我们后面单独划分和讲解。 托管内存Managed Memory 文章开头的总览图中我们把托管内存区域设为 0 此时任务堆空间约 3G 而使用 Flink 默认配置时任务堆只有 1.5G。这是因为默认情况下托管内存占了 40% 的 Flink 总内存导致堆内存可用的量变的相当少。因此我们非常有必要 了解什么是托管内存。   从官方文档和 Flink 源码上来看托管内存主要有三大使用场景 批处理算法例如排序、HashJoin 等。他们会从 Flink 的 MemoryManager 请求内存片段MemorySegment而 MemoryManager 则会调用 UNSAFE.allocateMemory 分配堆外内存。 RocksDB StateBackendFlink 只会预留一部分空间并扣除预算但是不介入实际内存分配。因此该类型的内存资源被 称为 OpaqueMemoryResource 实际的内存分配还是由 JNI 调用的 RocksDB 自己通过 malloc 函数申请。 PyFlink。与 JNI 类似在与 Python 进程交互的过程中也会用到一部分托管内存。 显然对于普通的流式 SQL 作业如果启用了 RocksDB 状态后端时才会大量使用托管内存。因此如果您的 业务场 景并未用到 RocksDB 那么可以 调小托管内存的相对比例 taskmanager.memory.managed.fraction 或绝对大小 taskmanager.memory.managed.size 以 增大任务堆的空间 。 直接内存Direct Memory 直接内存是 JVM 堆外的一类内存它提供了相对安全可控但又不受 GC 影响的空间 JVM 参数是 - XX:MaxDirectMemorySize 。它主要用于 框架堆外内存Framework Off-heap Memory taskmanager.memory.framework.off-heap.size 参数默认 128M例如 Sort-Merge Shuffle 算法所需的内存 任务堆外内存Task Off-heap Memory taskmanager.memory.task.off-heap.size 参数默认为 0用于用户任务 网络内存Network MemoryNetty 对 Network Buffer 的网络传输taskmanager.memory.network.fraction 等参数默认 0.1 即 10% 的 Flink 总内存。该值必须在 taskmanager.memory.network.min64mb 和 taskmanager.memory.network.maxinfinite 之间。 在生产环境中如果作业并行度非常大例如大于 500 甚至 1000 则需要调大 taskmanager.network.memory.floating - buffers - per - gate 和 taskmanager.network.memory.max - buffers - per- channel 例如从 8 调整到 1000 和 taskmanager.network.memory.buffers - per - channel 例如从 2 调整到 500避免 Network Buffer 不足导致作业报错。 JVM 元空间JVM Metaspace JVM Metaspace 主要保存了加载的类和方法的元数据 Flink 配置的参数是 taskmanager.memory.jvm- metaspace.size 默认大小为 256M JVM 参数是 - XX:MaxMetaspaceSize 。    如果用户编写的 Flink 程序中有大量的动态类加载的需求例如一个用户作业动态编译并加载了 44 万个类此时 就容易出现元空间用量远超预期发生 OOM 报错。此时就需要适当调大元空间的大小或者优化用户程序及时卸载无用的 Classloader 。 JVM 运行时开销JVM Overhead 除了上述描述的内存区域外 JVM 自己还有一小块 ” 自留地 “ 用来存放线程栈、编译的代码缓存、 JNI 调用的库所分 配的内存等等Flink 配置参数是 taskmanager.memory.jvm - overhead.fraction 默认是 JVM 总内存的 10% 。该值范 围必须在 taskmanager.memory.jvm - overhead.min196mb 和 taskmanager.memory.jvm - overhead.max1gb 之间。    对于旧版本 1.9 及之前的 Flink RocksDB 通过 malloc 分配的内存也属于 Overhead 部分而新版 Flink 把这部分归 类到托管内存Managed 因此在生产环境下如果 RocksDB 频繁造成内存超用除了调大 Managed 托管内存外也可以考虑调大 Overhead 区空间以留出更多的安全余量。 总结 JVM 进程总内存 Total Process Memory TaskManager 所在 JVM 的最大可用的内存配额。 taskmanager.memory.process.size 无默认值。 Flink 总内存 Total Flink Memory 用于 Flink 框架的 JVM 堆内存。 JVM 进程总内存减去 Flink 无法控制的 Metaspace 和 Overhead 区域。 JVM 堆内存 JVM Heap Memory 由 JVM 提供给用户程序运行的内存区域。 框架堆内存Framework Heap Memory taskmanager.memory.framework.heap.size 默认 128mb 任务堆内存Task Heap Memory用于 Flink 应用的算子及用户代码的 JVM 堆内存。taskmanager.memory.task.heap.size 无默认值一般由计算得到。 JVM 堆外内存 JVM Off-Heap Memory 托管内存Managed Memory由 Flink 管理的用于排序、哈希表、缓存中间结果及 RocksDB State Backend 的本地 内存。 taskmanager.memory.managed.fraction 按比例分配默认 0.4JVM 进程总内存的 40% taskmanager.memory.managed.size 按大小分配无默认值。 直接内存 Direct Memory 框架堆外内存Framework Off-heap Memory例如 Sort-Merge Shuffle 算法所需的内存。 taskmanager.memory.framework.off-heap.size 默认 128mb。 任务堆外内存Task Off-heap Memory用于用户任务。 taskmanager.memory.task.off-heap.size 默认 0 bytes。 网络内存Network MemoryNetty 对 Network Buffer 的网络传输。 taskmanager.memory.network.fraction 默认 0.1JVM 总内存的 10%。该值必须在 taskmanager.memory.network.min64mb 和 taskmanager.memory.network.maxinfinite 之间。 JVM 元空间JVM Metaspace主要保存加载的类和方法的元数据。         taskmanager.memory.jvm-metaspace.size 默认 256mb。    JVM 运行时开销 JVM Overhead JVM 自己还有一小块 ” 自留地 “ 用来存放线程栈、编译的代码缓存、 JNI 调用的库所分配的内存等等。         taskmanager.memory.jvm- overhead.fraction 默认 0.1 JVM 进程总内存的 10% 。该值范围必须在 taskmanager.memory.jvm- overhead.min196mb 和 taskmanager.memory.jvm - overhead.max1gb 之间。 调整建议 通常情况下不建议对 框架堆内存 和 框架堆外内存 进行调整。除非你非常肯定 Flink 的内部数据结构及操作需要更多的内存 配置 Flink 内存最简单的方法就是配置总内存。此外 Flink 也支持更细粒度的内存配置方式。 Flink 会根据默认值或其他配置参数自动调整剩余内存部分的大小。 运行命令时配置 JobManager 和 TaskManager 内存的方式如下。 bin/flink run-application -d \ -t yarn-application \ -Dyarn.application.queuedefault \ -Djobmanager.memory.process.size1024mb \ -Dtaskmanager.memory.process.size4096mb \ -Dtaskmanager.memory.managed.size0mb \ -Dtaskmanager.numberOfTaskSlots2 \ -c com.mrhelloworld.flink.java.wordcount.WordCountDemo \ /root/flink-quickstart-demo.jar yarn.application.queue 指定 YARN 队列 jobmanager.memory.process.size 指定 JobManager 总进程内存大小 taskmanager.memory.process.size 指定 TaskManager 的总进程内存大小一般 2-8G YARN 默认最大给 8G taskmanager.numberOfTaskSlots 指定 TaskManager 的 Slot 数。
http://www.pierceye.com/news/858035/

相关文章:

  • 网站建设违约责任条款枣庄专业做网站
  • python做爬虫和做网站做两个一摸一样的网站
  • 网站做微信登录asp.net做网站头部和尾部_都用什么来实现
  • 南充哪里做网站太原关键词优化公司
  • 哪个网站做的ppt模板好投放广告网站
  • 公司网站中新闻中心怎样做优化百度浏览器电脑版
  • 厦门网站建设 九来外国做视频在线观看网站
  • 用.net做购物网站山东建筑公司实力排名
  • 做百度推广网站找谁好宁夏省建筑信息平台
  • phpcmsv9手机网站源码网站开发ide php
  • 学校网站建设成功案例微信公众号网站导航怎么做
  • 重庆汽车网站建设建立大安全大应急框架
  • 重庆模板建站定制网站做企业网站到哪里找
  • asp技术做网站网站建设推广是什么工作室
  • 运营公众号还是做网站室内装修设计软件哪个好用
  • 卖营销软件的网站如何利用站群做网站
  • 网站空间价格怎么算网站制作与发布
  • 做网站的动态图片廊坊做网站哪家好
  • 建设企业网站报价怎么做网站logo
  • 企业类网站谷歌seo招聘
  • asp.net网站安装顺序idc 公司网站模板
  • 新手学做网站优化2022app分类排行
  • 微信微网站制作公司2008年做的网站
  • 网站建设柒首先金手指1男孩做网站
  • 葫芦岛市建设局网站网页制作与网站发布
  • 企业网站首页布局尺寸营销网站建设哪家便宜
  • 专题网站建设策划郑州市做网站的公
  • wordpress網頁版天津百度网站排名优化
  • 做网站建设销售工资代做电大网站ui作业
  • DMZ做网站wordpress 小工具 创建