精华内容
下载资源
问答
  • Hadoop Yarn内存使用优化配置

    万次阅读 2015-10-05 17:56:53
    第一部分Hadoop Yarn内存使用优化配置  在Hadoop2.0中, YARN负责管理MapReduce中的资源(内存, CPU等)并且将其打包成Container. 这样可以精简MapReduce, 使之专注于其擅长的数据处理任务, 将无需考虑资源...

    第一部分Hadoop Yarn内存使用优化配置

        Hadoop2.0, YARN负责管理MapReduce中的资源(内存, CPU)并且将其打包成Container. 这样可以精简MapReduce, 使之专注于其擅长的数据处理任务将无需考虑资源调度。

        YARN会管理集群中所有机器的可用计算资源基于这些资源YARN会调度应用(比如MapReduce)发来的资源请求然后YARN会通过分配Container来给每个应用提供处理能力, ContainerYARN中处理能力的基本单元是对内存, CPU等的封装。

        Yarn架构做资源管理,在每个节点上面运行NodeManager负责节点资源的分配,在Yarn上面Container是资源的分配的最小单元。

        Yarn集群的内存分配配置在yarn-site.xml文件中配置:

    1. <property>  
    2.     <name>yarn.nodemanager.resource.memory-mb</name>  
    3.     <value>8192</value>  
    4.     <discription>每个节点可用内存,单位MB</discription>  
    5. </property>  
    6.   
    7. <property>  
    8.     <name>yarn.scheduler.minimum-allocation-mb</name>  
    9.     <value>1024</value>  
    10.     <discription>单个任务可申请最少内存,默认1024MB</discription>  
    11. </property>  
    12.   
    13. <property>  
    14.     <name>yarn.scheduler.maximum-allocation-mb</name>  
    15.     <value>8192</value>  
    16.     <discription>单个任务可申请最大内存,默认8192MB</discription>  
    17. </property> 

        Mapreduce的任务的内存配置:

    1. <property> 
    2. <name>mapreduce.map.memory.mb</name> 
    3. <value>1024</value> 
    4. <description>每个Map任务的物理内存限制</description> 
    5. </property> 
    6.  
    7. <property> 
    8. <name>mapreduce.reduce.memory.mb</name> 
    9. <value>1024</value> 
    10. <description>每个Reduce任务的物理内存限制</description> 
    11. </property> 
    12.  
    13. <property> 
    14. <name>mapred.child.java.opts</name> 
    15. <value>-Xmx1024m</value> 
    16. </property> 

        其中mapreduce.map.memory.mb配置每个map任务的内存,应该是大于或者等于Container的最小内存。  

        按照上面的配置:每个slave可以运行map的数据<= yarn.nodemanager.resource.memory-mb/mapreduce.map.memory.mb

    reduce任务的数量<=yarn.nodemanager.resource.memory-mb/mapreduce.reduce.memory.mb

     

     

    第二部分Hadoop YARN配置参数剖析

    一、RMNM相关参数(yarn-site.xml

    1ResourceManager相关配置参数

    1yarn.resourcemanager.address

    参数解释:ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等。

    默认值:${yarn.resourcemanager.hostname}:8032

    2yarn.resourcemanager.scheduler.address

    参数解释:ResourceManager ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。

    默认值:${yarn.resourcemanager.hostname}:8030

    3yarn.resourcemanager.resource-tracker.address

    参数解释:ResourceManager NodeManager暴露的地址.NodeManager通过该地址向RM汇报心跳,领取任务等。

    默认值:${yarn.resourcemanager.hostname}:8031

    4yarn.resourcemanager.admin.address

    参数解释:ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。

    默认值:${yarn.resourcemanager.hostname}:8033

    5yarn.resourcemanager.webapp.address

    参数解释:ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息。

    默认值:${yarn.resourcemanager.hostname}:8088

    6yarn.resourcemanager.scheduler.class

    参数解释:启用的资源调度器主类。目前可用的有FIFOCapacity SchedulerFair Scheduler

    默认值:org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

    7yarn.resourcemanager.resource-tracker.client.thread-count

    参数解释:处理来自NodeManagerRPC请求的Handler数目。

    默认值:50

    8yarn.resourcemanager.scheduler.client.thread-count

    参数解释:处理来自ApplicationMasterRPC请求的Handler数目。

    默认值:50

    9yarn.scheduler.minimum-allocation-mb/yarn.scheduler.maximum-allocation-mb

    参数解释:单个可申请的最小/最大内存资源量。比如设置为10243072,则运行MapRedce作业时,每个Task最少可申请1024MB内存,最多可申请3072MB内存。

    默认值:1024/8192

    10yarn.scheduler.minimum-allocation-vcores/yarn.scheduler.maximum-allocation-vcores

    参数解释:单个可申请的最小/最大虚拟CPU个数。比如设置为14,则运行MapRedce作业时,每个Task最少可申请1个虚拟CPU,最多可申请4个虚拟CPU。什么是虚拟CPU,可阅读我的这篇文章:“YARN 资源调度器剖析

    默认值:1/32

    11yarn.resourcemanager.nodes.include-path /yarn.resourcemanager.nodes.exclude-path

    参数解释:NodeManager黑白名单。如果发现若干个NodeManager存在问题,比如故障率很高,任务运行失败率高,则可以将之加入黑名单中。注意,这两个配置参数可以动态生效。(调用一个refresh命令即可)

    默认值:“”

    12yarn.resourcemanager.nodemanagers.heartbeat-interval-ms

    参数解释:NodeManager心跳间隔

    默认值:1000(毫秒)

    2NodeManager相关配置参数

    1yarn.nodemanager.resource.memory-mb

    参数解释:NodeManager总的可用物理内存。注意,该参数是不可修改的,一旦设置,整个运行过程中不可动态修改。另外,该参数的默认值是8192MB,即使你的机器内存不够8192MBYARN也会按照这些内存来使用(傻不傻?),因此,这个值通过一定要配置。不过,Apache已经正在尝试将该参数做成可动态修改的。

    默认值:8192

    2yarn.nodemanager.vmem-pmem-ratio

    参数解释:每使用1MB物理内存,最多可用的虚拟内存数。

    默认值:2.1

    3yarn.nodemanager.resource.cpu-vcores

    参数解释:NodeManager总的可用虚拟CPU个数。

    默认值:8

    4yarn.nodemanager.local-dirs

    参数解释:中间结果存放位置,类似于1.0中的mapred.local.dir。注意,这个参数通常会配置多个目录,已分摊磁盘IO负载。

    默认值:${hadoop.tmp.dir}/nm-local-dir

    5yarn.nodemanager.log-dirs

    参数解释:日志存放地址(可配置多个目录)。

    默认值:${yarn.log.dir}/userlogs

    6yarn.nodemanager.log.retain-seconds

    参数解释:NodeManager上日志最多存放时间(不启用日志聚集功能时有效)。

    默认值:108003小时)

    7yarn.nodemanager.aux-services

    参数解释:NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序

    默认值:“”

    二、权限与日志聚集相关参数(yarn-site.xml

    1、权限相关配置参数

        这里的权限由三部分组成,分别是:(1)管理员和普通用户如何区分2)服务级别的权限,比如哪些用户可以向集群提交ResourceManager提交应用程序,(3)队列级别的权限,比如哪些用户可以向队列A提交作业等。

        管理员列表由参数yarn.admin.acl指定。

        服务级别的权限是通过配置hadoop-policy.xml实现的,这个与Hadoop 1.0类似。

        队列级别的权限是由对应的资源调度器内部配置的,比如Fair Scheduler或者Capacity Scheduler等,具体见后面。

    2、日志聚集相关配置参数

        日志聚集是YARN提供的日志中央化管理功能,它能将运行完成的Container/任务日志上传到HDFS上,从而减轻NodeManager负载,且提供一个中央化存储和分析机制。默认情况下,Container/任务日志存在在各个NodeManager上,如果启用日志聚集功能需要额外的配置。

    1yarn.log-aggregation-enable

    参数解释:是否启用日志聚集功能。

    默认值:false

    2yarn.log-aggregation.retain-seconds

    参数解释:在HDFS上聚集的日志最多保存多长时间。

    默认值:-1

    3yarn.log-aggregation.retain-check-interval-seconds

    参数解释:多长时间检查一次日志,并将满足条件的删除,如果是0或者负数,则为上一个值的1/10

    默认值:-1

    4yarn.nodemanager.remote-app-log-dir

    参数解释:当应用程序运行结束后,日志被转移到的HDFS目录(启用日志聚集功能时有效)。

    默认值:/tmp/logs

    5yarn.log-aggregation.retain-seconds

    参数解释:远程日志目录子目录名称(启用日志聚集功能时有效)。

    默认值:日志将被转移到目录${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam}

    三、MapReduce相关参数(mapred-site.xml

        MapReduce相关配置参数分为两部分,分别是JobHistory Server和应用程序参数,Job History可运行在一个独立节点上,而应用程序参数则可存放在mapred-site.xml中作为默认参数,也可以在提交应用程序时单独指定,注意,如果用户指定了参数,将覆盖掉默认参数。

        以下这些参数全部在mapred-site.xml中设置。

    1MapReduce JobHistory相关配置参数

        JobHistory所在节点的mapred-site.xml中配置。

    1mapreduce.jobhistory.address

    参数解释:MapReduce JobHistory Server地址。

    默认值: 0.0.0.0:10020

    2mapreduce.jobhistory.webapp.address

    参数解释:MapReduce JobHistory Server Web UI地址。

    默认值: 0.0.0.0:19888

    3mapreduce.jobhistory.intermediate-done-dir

    参数解释:MapReduce作业产生的日志存放位置。

    默认值: /mr-history/tmp

    4mapreduce.jobhistory.done-dir

    参数解释:MR JobHistory Server管理的日志的存放位置。

    默认值: /mr-history/done

    2MapReduce作业配置参数

        可在客户端的mapred-site.xml中配置,作为MapReduce作业的缺省配置参数。也可以在作业提交时,个性化指定这些参数。

    参数名称

    缺省值

    说明

    mapreduce.job.name


    作业名称

    mapreduce.job.priority

    NORMAL

    作业优先级

    yarn.app.mapreduce.am.resource.mb

    1536

    MR ApplicationMaster占用的内存量

    yarn.app.mapreduce.am.resource.cpu-vcores

    1

    MR ApplicationMaster占用的虚拟CPU个数

    mapreduce.am.max-attempts

    2

    MR ApplicationMaster最大失败尝试次数

    mapreduce.map.memory.mb

    1024

    每个Map Task需要的内存量

    mapreduce.map.cpu.vcores

    1

    每个Map Task需要的虚拟CPU个数

    mapreduce.map.maxattempts

    4

    Map Task最大失败尝试次数

    mapreduce.reduce.memory.mb

    1024

    每个Reduce Task需要的内存量

    mapreduce.reduce.cpu.vcores

    1

    每个Reduce Task需要的虚拟CPU个数

    mapreduce.reduce.maxattempts

    4

    Reduce Task最大失败尝试次数

    mapreduce.map.speculative

    false

    是否对Map Task启用推测执行机制

    mapreduce.reduce.speculative

    false

    是否对Reduce Task启用推测执行机制

    mapreduce.job.queuename

    default

    作业提交到的队列

    mapreduce.task.io.sort.mb

    100

    任务内部排序缓冲区大小

    mapreduce.map.sort.spill.percent

    0.8

    Map阶段溢写文件的阈值(排序缓冲区大小的百分比)

    mapreduce.reduce.shuffle.parallelcopies

    5

    Reduce Task启动的并发拷贝数据的线程数目

        注意,MRv2重新命名了MRv1中的所有配置参数,但兼容MRv1中的旧参数,只不过会打印一条警告日志提示用户参数过期。MapReduce新旧参数对照表可参考Javaorg.apache.hadoop.mapreduce.util.ConfigUtil,举例如下:

    过期参数名

    新参数名

    mapred.job.name

    mapreduce.job.name

    mapred.job.priority

    mapreduce.job.priority

    mapred.job.queue.name

    mapreduce.job.queuename

    mapred.map.tasks.speculative.execution

    mapreduce.map.speculative

    mapred.reduce.tasks.speculative.execution

    mapreduce.reduce.speculative

    io.sort.factor

    mapreduce.task.io.sort.factor

    io.sort.mb

    mapreduce.task.io.sort.mb

    四、Fair Scheduler相关参数

        参考:http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-configurations-fair-scheduler/

    五、Capacity Scheduler相关参数

        Capacity SchedulerYARN中默认的资源调度器。

        参考:http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-configurations-capacity-scheduler/

     

    展开全文
  • Intellij IDEA 2018/2019 优化配置使用技巧、参数设置、快捷键汇总帖   IDEA优化配置(1)--- 需要改的几个配置(基于Intellij IDEA 2018版) - chunlynn的小屋  IDEA优化配置(2)--- Intellij IDEA 的...
    展开全文
  • YARN内存使用优化配置

    千次阅读 2015-10-22 19:09:02
    YARN允许用户配置每个节点上可用的物理内存资源,注意,这里是“可用的”,因为一个节点上的内存会被若干个服务共享,比如一部分给YARN,一部分给HDFS,一部分给HBase等,YARN配置的只是自己可以使用的,配置参数...

    在Hadoop2.0中, YARN负责管理MapReduce中的资源(内存, CPU等)并且将其打包成Container. 这样可以精简MapReduce, 使之专注于其擅长的数据处理任务, 将无需考虑资源调度. 如下图所示 
    Screen Shot 2014-05-24 at 上午11.43.46YARN会管理集群中所有机器的可用计算资源. 基于这些资源YARN会调度应用(比如MapReduce)发来的资源请求, 然后YARN会通过分配Container来给每个应用提供处理能力, Container是YARN中处理能力的基本单元, 是对内存, CPU等的封装.

    目前我这里的服务器情况:6台slave,每台:32G内存,2*6核CPU。

    由于hadoop 1.x存在JobTracker和TaskTracker,资源管理有它们实现,在执行mapreduce作业时,资源分为map task和reduce task。所有存在下面两个参数分别设置每个TaskTracker可以运行的任务数:

    <property>
      <name>mapred.tasktracker.map.tasks.maximum</name>
      <value>6</value>
      <description><![CDATA[CPU数量=服务器CPU总核数 / 每个CPU的核数;服务器CPU总核数 = more /proc/cpuinfo | grep 'processor' | wc -l;每个CPU的核数 = more /proc/cpui nfo | grep 'cpu cores']]></description>
    </property>
    <property>
        <name>mapred.tasktracker.reduce.tasks.maximum</name>
        <value>4</value>
        <description>一个task tracker最多可以同时运行的reduce任务数量</description>
    </property>

    但是在hadoop 2.x中,引入了Yarn架构做资源管理,在每个节点上面运行NodeManager负责节点资源的分配,而slot也不再像1.x那样区分Map slot和Reduce slot。在Yarn上面Container是资源的分配的最小单元。

    Yarn集群的内存分配配置在yarn-site.xml文件中配置:

    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>22528</value>
        <discription>每个节点可用内存,单位MB</discription>
      </property>
      
      <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>1500</value>
        <discription>单个任务可申请最少内存,默认1024MB</discription>
      </property>
      
      <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>16384</value>
        <discription>单个任务可申请最大内存,默认8192MB</discription>
      </property>

     由于我Yarn集群还需要跑Spark的任务,而Spark的Worker内存相对需要大些,所以需要调大单个任务的最大内存(默认为8G)。

    而Mapreduce的任务的内存配置:

    <property>
        <name>mapreduce.map.memory.mb</name>
        <value>1500</value>
        <description>每个Map任务的物理内存限制</description>
      </property>
      
      <property>
        <name>mapreduce.reduce.memory.mb</name>
        <value>3000</value>
        <description>每个Reduce任务的物理内存限制</description>
      </property>
      
      <property>
        <name>mapreduce.map.java.opts</name>
        <value>-Xmx1200m</value>
      </property>
      
      <property>
        <name>mapreduce.reduce.java.opts</name>
        <value>-Xmx2600m</value>
      </property>
    mapreduce.map.memory.mb:每个map任务的内存,应该是大于或者等于Container的最小内存。
    
    按照上面的配置:每个slave可以运行map的数据<= 22528/1500,reduce任务的数量<=22528/3000

    Hadoop  YARN同时支持内存和CPU两种资源的调度(默认只支持内存,如果想进一步调度CPU,需要自己进行一些配置),本文将介绍YARN是如何对这些资源进行调度和隔离的。

    在YARN中,资源管理由ResourceManager和NodeManager共同完成,其中,ResourceManager中的调度器负责资源的分配,而NodeManager则负责资源的供给和隔离。ResourceManager将某个NodeManager上资源分配给任务(这就是所谓的“资源调度”)后,NodeManager需按照要求为任务提供相应的资源,甚至保证这些资源应具有独占性,为任务运行提供基础的保证,这就是所谓的资源隔离。

    关于Hadoop YARN资源调度器的详细介绍,可参考我的这篇文章:YARN/MRv2 Resource Manager深入剖析—资源调度器

    在正式介绍具体的资源调度和隔离之前,先品味一下内存和CPU这两种资源的特点,这是两种性质不同的资源。内存资源的多少会会决定任务的生死,如果内存不够,任务可能会运行失败;相比之下,CPU资源则不同,它只会决定任务运行的快慢,不会对生死产生影响。

    【YARN中内存资源的调度和隔离】

    基于以上考虑,YARN允许用户配置每个节点上可用的物理内存资源,注意,这里是“可用的”,因为一个节点上的内存会被若干个服务共享,比如一部分给YARN,一部分给HDFS,一部分给HBase等,YARN配置的只是自己可以使用的,配置参数如下:

    (1)yarn.nodemanager.resource.memory-mb

    表示该节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。

    (2)yarn.nodemanager.vmem-pmem-ratio

    任务每使用1MB物理内存,最多可使用虚拟内存量,默认是2.1。

    (3) yarn.nodemanager.pmem-check-enabled

    是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true。

    (4) yarn.nodemanager.vmem-check-enabled

    是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true。

    (5)yarn.scheduler.minimum-allocation-mb

    单个任务可申请的最少物理内存量,默认是1024(MB),如果一个任务申请的物理内存量少于该值,则该对应的值改为这个数。

    (6)yarn.scheduler.maximum-allocation-mb

    单个任务可申请的最多物理内存量,默认是8192(MB)。

    默认情况下,YARN采用了线程监控的方法判断任务是否超量使用内存,一旦发现超量,则直接将其杀死。由于Cgroups对内存的控制缺乏灵活性(即任务任何时刻不能超过内存上限,如果超过,则直接将其杀死或者报OOM),而Java进程在创建瞬间内存将翻倍,之后骤降到正常值,这种情况下,采用线程监控的方式更加灵活(当发现进程树内存瞬间翻倍超过设定值时,可认为是正常现象,不会将任务杀死),因此YARN未提供Cgroups内存隔离机制。

    【YARN中CPU资源的调度和隔离】

    在YARN中,CPU资源的组织方式仍在探索中,目前(2.2.0版本)只是一个初步的,非常粗粒度的实现方式,更细粒度的CPU划分方式已经提出来了,正在完善和实现中。

    目前的CPU被划分成虚拟CPU(CPU virtual Core),这里的虚拟CPU是YARN自己引入的概念,初衷是,考虑到不同节点的CPU性能可能不同,每个CPU具有的计算能力也是不一样的,比如某个物理CPU的计算能力可能是另外一个物理CPU的2倍,这时候,你可以通过为第一个物理CPU多配置几个虚拟CPU弥补这种差异。用户提交作业时,可以指定每个任务需要的虚拟CPU个数。在YARN中,CPU相关配置参数如下:

    (1)yarn.nodemanager.resource.cpu-vcores

    表示该节点上YARN可使用的虚拟CPU个数,默认是8,注意,目前推荐将该值设值为与物理CPU核数数目相同。如果你的节点CPU核数不够8个,则需要调减小这个值,而YARN不会智能的探测节点的物理CPU总数。

    (2) yarn.scheduler.minimum-allocation-vcores

    单个任务可申请的最小虚拟CPU个数,默认是1,如果一个任务申请的CPU个数少于该数,则该对应的值改为这个数。

    (3)yarn.scheduler.maximum-allocation-vcores

    单个任务可申请的最多虚拟CPU个数,默认是32。

    默认情况下,YARN是不会对CPU资源进行调度的,你需要配置相应的资源调度器让你支持,具体可参考我的这两篇文章:

    (1)Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数

    (2)Hadoop YARN配置参数剖析(5)—Capacity Scheduler相关参数

    默认情况下,NodeManager不会对CPU资源进行任何隔离,你可以通过启用Cgroups让你支持CPU隔离。

    由于CPU资源的独特性,目前这种CPU分配方式仍然是粗粒度的。举个例子,很多任务可能是IO密集型的,消耗的CPU资源非常少,如果此时你为它分配一个CPU,则是一种严重浪费,你完全可以让他与其他几个任务公用一个CPU,也就是说,我们需要支持更粒度的CPU表达方式。

    借鉴亚马逊EC2中CPU资源的划分方式,即提出了CPU最小单位为EC2 Compute Unit(ECU),一个ECU代表相当于1.0-1.2 GHz 2007 Opteron or 2007 Xeon处理器的处理能力。YARN提出了CPU最小单位YARN Compute Unit(YCU),目前这个数是一个整数,默认是720,由参数yarn.nodemanager.resource.cpu-ycus-per-core设置,表示一个CPU core具备的计算能力(该feature在2.2.0版本中并不存在,可能增加到2.3.0版本中),这样,用户提交作业时,直接指定需要的YCU即可,比如指定值为360,表示用1/2个CPU core,实际表现为,只使用一个CPU core的1/2计算时间。注意,在操作系统层,CPU资源是按照时间片分配的,你可以说,一个进程使用1/3的CPU时间片,或者1/5的时间片。对于CPU资源划分和调度的探讨,可参考以下几个链接:

    https://issues.apache.org/jira/browse/YARN-1089

    https://issues.apache.org/jira/browse/YARN-1024

    Hadoop 新特性、改进、优化和Bug分析系列5:YARN-3

    【总结】

    目前,YARN 内存资源调度借鉴了Hadoop 1.0中的方式,比较合理,但CPU资源的调度方式仍在不断改进中,目前只是一个初步的粗糙实现,相信在不久的将来,YARN 中CPU资源的调度将更加完善。

    展开全文
  • PostgreSQL 配置优化

    千次阅读 热门讨论 2020-11-01 16:20:40
    PostgreSQL配置优化 PostgreSQL配置优化 硬件和系统配置 测试工具 配置文件 主要选项 测试数据 总结 硬件和系统配置 操作系统 Ubuntu13.04 系统位数 64 CPU Intel(R) Core...

    PostgreSQL配置优化

    • PostgreSQL配置优化
        • 硬件和系统配置
        • 测试工具
        • 配置文件
        • 主要选项
        • 测试数据
        • 总结

    硬件和系统配置

    操作系统 Ubuntu13.04
    系统位数 64
    CPU Intel(R) Core(TM)2 Duo CPU
    内存 4G
    硬盘 Seagate ST2000DM001-1CH164
    测试工具 PostgreSQL-9.1.11

    测试工具

    工具名称 pgbench
    数据量 200W(整个数据库大小约为300M)
    模拟客户端数 4
    线程数 4
    测试时间 60秒
    • 准备命令:pgbench -i -s 20 pgbenchdb
    • 测试命令:pgbench -r -j4 -c4 -T60 testdb

    配置文件

    默认的配置配置文件是保存在/etc/postgresql/VERSION/main目录下的postgresql.conf文件

    • 如果想查看参数修改是否生效,可以用psql连接到数据库后,用<show 选项名> 来查看。
    • 如果要修改shared_buffers, 在ubuntu下可能需要执行命令<sysctl -w>Managing Kernel Resources

    主要选项

    选项 默认值 说明 是否优化 原因
    max_connections 100 允许客户端连接的最大数目 因为在测试的过程中,100个连接已经足够
    fsync on 强制把数据同步更新到磁盘 因为系统的IO压力很大,为了更好的测试其他配置的影响,把改参数改为off
    shared_buffers 24MB 决定有多少内存可以被PostgreSQL用于缓存数据(推荐内存的1/4) 在IO压力很大的情况下,提高该值可以减少IO
    work_mem 1MB 使内部排序和一些复杂的查询都在这个buffer中完成 有助提高排序等操作的速度,并且减低IO
    effective_cache_size 128MB 优化器假设一个查询可以用的最大内存,和shared_buffers无关(推荐内存的1/2) 设置稍大,优化器更倾向使用索引扫描而不是顺序扫描
    maintenance_work_mem 16MB 这里定义的内存只是被VACUUM等耗费资源较多的命令调用时使用 把该值调大,能加快命令的执行
    wal_buffer 768kB 日志缓存区的大小 可以降低IO,如果遇上比较多的并发短事务,应该和commit_delay一起用
    checkpoint_segments 3 设置wal log的最大数量数(一个log的大小为16M) 默认的48M的缓存是一个严重的瓶颈,基本上都要设置为10以上
    checkpoint_completion_target 0.5 表示checkpoint的完成时间要在两个checkpoint间隔时间的N%内完成 能降低平均写入的开销
    commit_delay 0 事务提交后,日志写到wal log上到wal_buffer写入到磁盘的时间间隔。需要配合commit_sibling 能够一次写入多个事务,减少IO,提高性能
    commit_siblings 5 设置触发commit_delay的并发事务数,根据并发事务多少来配置 减少IO,提高性能

    测试数据

    • 测试的数据是运行3次,取平均值。
    • 关闭fsync是为了更好的体现出其他参数对PostgreSQL的影响。
    参数 修改值 事务总数 tps(包括建立连接) tps(不包括建立连接)
    默认设置   8464 140.999792 141.016182
    fsync off 92571 1479.969755 1480.163355
    shared_buffers 1GB 100055 1635.759275 1635.977823
    work_mem 10MB 101209 1665.804812 1666.04082
    effective_cache_size 2GB 98209 1636.733152 1636.970271
    maintenance_work_mem 512MB 92930 1548.029233 1548.223108
    checkpoint_segments 32 195982 3265.995 3266.471064
    checkpoint_completion_target 0.9 194390 3239.406493 3239.842596
    wal_buffer 8MB 198639 3310.241458 3310.724067
    恢复fsync off 11157 185.883542 185.909849
    commit_delay && commit_siblings 10 && 4 11229 187.103538 187.131747

    总结

      事务总数 tps(包括建立连接) tps(不包括建立连接)
    优化前 8464 140.999792 141.016182
    优化后(fsync=on) 11229 187.103538 187.131747
    优化后(fsync=off) 198639 3310.241458 3310.724067

    在fsync打开的情况下,优化后性能能够提升30%左右。因为有部分优化选项在默认的SQL测试语句中没有体现出它的优势,如果到实际测试中,提升应该不止30%。
    测试的过程中,主要的瓶颈就在系统的IO,如果需要减少IO的负荷,最直接的方法就是把fsync关闭,但是这样就会在掉电的情况下,可能会丢失部分数据。

    展开全文
  • mysql 参数优化配置

    千次阅读 2018-04-19 10:56:51
    网站访问量大 怎样优化mysql数据库MySQL优化的一些建议,单机MySQL的优化我分为三个部分,一是服务器物理硬件的优化,二是 MySQL安装时的编译优化,三是自身配置文件my.cnf的优化;如果单机的优化也解决不了你的...
  • Mysql,数据库,性能优化,Mysql编译配置优化,XtraDB使用,my.cnf优化
  • IIS优化配置

    千次阅读 2018-08-20 10:34:28
    找到Web站点对应的应用程序池,“应用程序池” → 找到对应的...一、一般优化方案  1、基本设置  [1] 队列长度: 默认值1000,将原来的队列长度改为 65535。  [2] 启动32位应用程序:默认值False,改为Tr...
  • Tomcat 性能优化配置

    千次阅读 2018-05-26 17:04:41
    Tomcat 通常是JavaWeb开发中默认的开发环境,但是Tomcat的默认配置在作为生产环境时,很难满足我们的需求,很多方面都是可以优化的,尤其是内存和线程的配置,默认都很低。 下面结合资料和实际工作中的情况,从内存...
  • 宝塔面板配置优化

    万次阅读 2019-03-15 00:58:14
    本文主要介绍服务器以及宝塔面板配置优化
  • Tomcat7优化配置

    千次阅读 2016-10-02 19:01:24
    Tomcat在使用的过程中会遇到很多报错,有些是程序的报错,但还有一部分是tomcat本身的报错,我们可以通过优化tomcat的初始配置来提高tomcat的性能。Tomcat的优化主要体现在两方面:内存、并发连接数。
  • Spark core优化配置参数

    千次阅读 2018-06-08 12:30:27
    Spark core优化配置参数 应用属性 描述 spark.driver.cores 在集群模式下管理资源时,用于driver程序的CPU内核数量。默认为1。在生产环境的硬件上,这个值可能最少要上调到8或16。 spark.driver....
  • MySQL 内存优化配置

    万次阅读 2019-07-06 21:35:16
    1、确定可以使用的最大内存 2、确定mysql每个连接使用的内存 MySQL最大使用内存 select (@@key_buffer_size+ \ @@innodb_buffer_pool_size+ \ @@tmp_table_size+ \ @@query_cache_size+ \ @@innodb_log_buffer_...
  • Tomcat配置参数优化

    千次阅读 2016-10-04 10:42:52
    摘要: Tomcat在使用的过程中会遇到很多报错,有些是程序的报错,但还有一部分是tomcat本身的报错,我们可以通过优化tomcat的初始配置来提高tomcat的性能。Tomcat的优化主要体现在两方面:内存、并发连接数。 1、...
  • Spark 常用配置项与优化配置

    万次阅读 2015-03-12 22:01:38
    Spark 常用配置项与优化配置项 1、配置加载顺序: SparkConf方式 > 命令行参数方式 >文件配置方式。 应用程序SparkConf 优先级高 2.spark 常用配置详解 1 节点说明 IP Role 192.168.1.111...
  • redis常用优化配置

    千次阅读 2018-08-31 10:33:06
    1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程(守护进程(Daemon Process),也就是通常说的 Daemon 进程(精灵进程),是 Linux 中的后台服务进程。它...
  • tomcat优化配置参数

    千次阅读 2016-09-21 14:02:10
    优化内存,主要是在bin/catalina.bat/sh 配置文件中进行。linux上,在catalina.sh中添加: JAVA_OPTS="-server -Xms1G -Xmx2G -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:MaxPermSize=256...
  • Redis优化配置

    千次阅读 2019-09-23 16:35:47
    1、配置优化 2、缩减键值对象 3、命令处理 4、缓存淘汰方案 一、配置优化 1、linux配置优化 内存分配 vm.overcommit_memory Redis是内存操作,需要优先使用内存。设置overcommit 为1。是为了让 fork 操作...
  • myeclipse 最新优化配置

    万次阅读 2018-06-11 09:55:39
    JDK 环境变量配置 1.系统变量→新建 JAVA_HOME 变量 。变量值填写jdk的安装目录 2.系统变量→寻找 Path 变量→编辑。在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 3. 系统变量→新建 CLASSPATH 变量...
  • CDH常用优化配置

    千次阅读 2019-05-13 17:46:27
    搜集了CDH常用的hive配置可进行优化配置项 1.hive.metastore.warehouse.dir Hive 仓库目录是在 HDFS 中存储 Hive 表格的位置。注意此仓库目录的 Hive 默认值为“/user/hive/warehouse”。 2.hive.warehouse.subdir...
  • Mysql性能优化、Mysql参数优化、Mysql配置优化。Mysql参数优化对于不同的网站,及在线量等,以及机器硬件的配置都有关系,优化不可能一次性完成,需要不断的观察以及调试,才有可能的得到最佳的效果 Mysql参数优化...
  • IDEA配置优化,idea配置大全

    万次阅读 2019-11-23 14:00:10
    IDEA 配置优化32招 1、设置 Maven 1.在File->settings->搜索maven 2.Mavanhome directory--设置maven安装包的bin文件夹所在的位置 3.Usersettings file--设置setting文件所在的位置 4.Local...
  • python神器——Anaconda的安装与优化配置

    万次阅读 多人点赞 2018-06-08 16:18:05
    对于初学者来说,原版的python在使用的时候非常麻烦,特别是在添加库、升级库的时候总是会报好多错误,缺这缺那。但是自从有了Anaconda以后,妈妈再也不用担心我用不了python啦!...选择你需要的配置进行下载,...
  • 2.1.MySQL可以通过启动是通过设置配置参数或者使用配置文件两种方法进行配置(my.conf)。 2.2.Innodb缓存池设置:innodb_buffer_pool_size(推荐总内存的75%)。 2.3.缓存池的个数(5.5以后):inno
  • Myeclipse配置优化

    千次阅读 2018-03-03 10:46:33
    Myeclipse配置优化MyEclipse 优化速度方案仍然主要有这么几个方面:去除无需加载的模块、取消冗余的配置、去除不必要的检查、关闭更新。 一:去除不需要加载的模块一个系统20%的功能往往能够满足80%的需求,...
  • Altium Designer系统优化配置

    千次阅读 2017-04-09 22:01:28
    System Data Management Schematic PCB Editor
  • tomcat 的优化配置

    千次阅读 2007-07-30 17:34:00
    本文主要收集关于TOMCAT的优化配置设置。1.精简Tomcat和配置文件1.删除不需要的管理应用和帮助应用,提高tomcat安全性。# 删除webapps下所有文件# rm –fr $CATALINA_HOME/webapps/*# 删除server/wenapps下所有文件...
  • IDEA优化配置,提高启动和运行速度

    千次阅读 2018-12-27 23:48:08
    IDEA优化配置,提高启动和运行速度   IDEA默认启动配置主要考虑低配置用户,参数不高,导致 启动慢,然后运行也不流畅,这里我们需要优化下启动和运行配置;   找到idea安装的bin目录; D:\idea\IntelliJ ...
  • PostgreSQL配置优化

    万次阅读 2013-12-26 09:21:16
    PostgreSQL配置优化 PostgreSQL配置优化 硬件和系统配置测试工具配置文件主要选项测试数据总结 硬件和系统配置 操作系统 Ubuntu13.04 系统位数 64 CPU Intel(R) Co
  • val rdd = sc.fromHBase[(String, String, String)]("mytable") .select("col1", "col2") .inColumnFamily("columnFamily") .withStartRow("startRow") .withEndRow("endRow")

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 841,982
精华内容 336,792
关键字:

优化配置使用