zoukankan      html  css  js  c++  java
  • Spark处理数据出现大量GC导致处理性能变慢的原因及解决方案

    Spark应用程序处理的大数据多是运行于JVM上的,经常要面对GC优化问题。下面给出由于Linux系统原因导致的GC耗时异常的处理方式:

    打开Spark的GC日志,在spark-env.sh文件中的SPARK_JAVA_OPTS参数上添加 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

    如果每次GC回收的量基本相同,但是在某一时间点,耗时异常大,这种情况下,有两种可能:

    1、GC收集对象所在内存被swap了

    2、GC线程进入IO等待状态,因为系统IO繁忙

    这两种情况可以由GC日志的/user/sys/real的值得pattern来识别,如果为Low user time,high system time,long GC pause说明数据内存被swap了,如果是Low user time,low system time,long GC pause说明GC线程进入IO等待状态。

    处理方式:

    对于情况1,确保JVM内存不被swap,可以启动参数-XX:+AlwaysPreTouch执行sysctl -w vm.swappiness=0 禁用swap

    对于情况2,均匀系统IO负载,可以通过执行

    sysctl -w vm.dirty_writeback_cenisecs=500

    sysctl -w vm.dirty_expire_centisecs=500来实现

  • 相关阅读:
    1121 Django基本
    1121 爬虫简单面条版
    1118 DOM
    1114 CSS基础
    1116 前端的练习--博客界面
    1112 前端基础之标签
    仿优酷错误
    1107 python自定义实现ORM
    cesm1_2_2在南信大大型机上的移植以及运行简单case的步骤
    ERROR:105: Unable to locate a modulefile for 'xxx'
  • 原文地址:https://www.cnblogs.com/tian2fei/p/4285168.html
Copyright © 2011-2022 走看看