大数据下批处理性能问题分析优化分享

news/2024/11/17 7:31:39/

                                   大数据下批处理性能问题分析优化分享

     互联网+的步伐加速了硬件资源的发展,而硬件资源的改进,促进社会的建设的快速发展,特别是这互联互通大数据时代,多用户大数据下,单核服务器无法承受处理,特别是对于一个并发量大,业务需求和数据类型多样化、数据量大的复杂系统,在架构上虽然是可以千变万化但是,需要综合考虑才能设计出合理的系统架构,这样的系统才是王道。

  例如CPU硬件采购考虑,多个独立的CPU来说确保系统的运算性能。因为多个单核CPU,每个CPU都有自己独立的芯片组件来完成系统运算,也就是有自己 进行快速数据交换的CACHE和其他外设交互的控制器,但是大部分服务器默认情况下,对应用服务都是单线程使用,满足基本功能操作,但是对于大型服务,大数据高并发性,需要调整对应参数才能真正充分利用多核多线程;而oracle 自从8i开始就赶上硬件发展步伐,在技术架构山支持多CPU同时处理并行处理能力,它在每个数据库函数中都实现了并行性,包括sql访问(全表检索)、并行数据操作和并行恢复等功能实现,当然cpu使用颗粒数跟oracle对应采购版本也有关系,当然Oracle并行执行也是一种分而治之的方法。执行一个sql时,分配多个并行进程同时执行数据扫描、连接以及聚合等操作也就是多个CPU来并行处理,使用更多的资源,得到更快的sql响应时间。并行执行是充分利用硬件资源,处理大量数据时的核心技术。

    例如某个大型企业财务监管报送系统,出现日终跑批,一个进程作业几个小时都没办法正常跑批处理数据,项目技术经理打电话咨询问题如何定位和优化处理,通过经理的耐心讲解,了解了生产系统软硬件环境,应用服务tomcat8、数据库服务是oracle、linux操作系统,通过分析各服务器资源使用情况,发现就数据库服务器资源使用比较异常,环境监测对应批处理服务执行过程的资源使用情况,如下图:

   

 

可以看到在执行该批处理作业时,oracle进程CPU使用率100%,但是总的有16个CPU线程,监控到的只有2个CPU线程在执行,通过PLSQL参数查看分析,发现oracle参数使用的都是默认最低配置,没有进行调整,如下图:

 

初步分析应该是oracle安装时都是启用默认参数配置,忘记根据服务器硬件资源配置情况进行动态调整参数,例如没有设置充分的把服务器对应的多核CPU配置利用上,因为默认下CPU线程最小配置,例如2个CPU线程使用;

SQL> show parameter parallel

NAME TYPE VALUE
------------------------------------ ---------------------- --------------------
fast_start_parallel_rollback string LOW
parallel_adaptive_multi_user boolean TRUE
parallel_automatic_tuning boolean FALSE
parallel_degree_limit string CPU
parallel_degree_policy string MANUAL
parallel_execution_message_size integer 16384
parallel_force_local boolean FALSE
parallel_instance_group string
parallel_io_cap_enabled boolean FALSE
parallel_max_servers integer 135
parallel_min_percent integer 0

NAME TYPE VALUE
------------------------------------ ---------------------- --------------------
parallel_min_servers integer 0
parallel_min_time_threshold string AUTO
parallel_server boolean FALSE
parallel_server_instances integer 1
parallel_servers_target integer 64
parallel_threads_per_cpu integer 2

解决方法:

对于一个大的任务,一般的做法是利用一个进程,串行的执行,如果系统资源足够,可以采用parallel技术,把一个大的任务分成若干个小的任务,同时启用n个进程/线程,并行的处理这些小的任务,这些并发的进程称为并行执行服务器(parallel executeion server),这些并发进程由一个称为并发协调进程的进程来管理。

例如本次发现的问题,在调整操作系统参数配置后,主要是通过调整Oracle其中核心参数parallel_threads_per_cpu,参数使用描述如下:

parallel_threads_per_cpu

  1. 参数类型:整型
  2. 默认值:2
  3. 修改:修改不需要重启数据库
  4. 取值范围: 任何非0值
  5. 基本参数:否

取值意义

该参数指定Orale的默认并行度,描述了一个CPU可处理并行查询进程或线程的数量

默认值在大多数情况下都是可行的,可根据实际负责调整,默认并行度使用如下计算公式;

parallel_threads_per_cpu integer 2
说明: 说明一个 CPU 在并行执行过程中可处理的进程或线程的数量,
并优化并行自适应算法和负载均衡算法。如果计算机在执行一个典型查询时有超负荷的迹象, 应减小该数值。
值范围: 任何非零值。
默认值: 根据操作系统而定 (通常为 2)

通过调整改为8后,在调整PARALLEL_DEGREE_POLICY 为auto,如下截图:

 

重新执行发现可以充分利用服务器CPU资源,而且整个批处理作业20分钟就执行完成;

 

总结说明:

对于一个应用来说,为了让应用达到最好的性能和可扩展性,我们不仅仅要充分利用 CPU 周期内可用的部分,而且要让这部分 CPU 的使用更有价值,而不是浪费。能够让 CPU 的周期利用的更充分对于多线程应用运行在多处理器和多核系统上至很有挑战性的。另外,当 CPU 达到饱和状态的时候并不能说明 CPU 的性能和伸缩性已经达到了最佳的状态。 


http://www.ppmy.cn/news/578535.html

相关文章

华为云盘(华为云空间)免费空间

华为云盘(华为云空间),免费容量:5GB,下载网址:cloud.huawei.com,扩容会员付费:2TB,698元/年;

〖编程初学者的自我修养 - 满分面试篇②〗- 面试之前需要做的「短期准备工作」

简介:应 850+ 小伙伴要求, 无论你是迷茫的在校生还是已经就业的老司机,该专栏都值得你订阅,它会让你成就更好的自己!说明:该文属于 编程初学者的自我修养 专栏,购买任意白宝书体系化专栏可加入易编程社区,早鸟价订阅模式除外。福利:加入社区的小伙伴们,除了可以获取博…

华为鸿蒙什么时候出12g内存,内存真是越大越好?为何华为不上12G,看完秒懂!...

苹果ios和安卓系统因为运行机制的不同,以流畅著称,安卓的卡顿那是出了名的,但是经过长期不懈的改进和软硬一体的优化,论流畅反应速度上华为已经超越了苹果。华为要悠着点,一是要控制价格,二是要控制成本&am…

简单了解华为模拟器

题目: 配置一个http服务器和DNS服务器,客户端能通过DNS服务器访问到htpp服务器。其他终端能互相ping通。 运行环境:华为模拟器 拓扑图: 给终端分配IP地址,网关: 配置域名服务器: 配置h…

华为android界面强刷救砖教程,华为g716强刷刷机教程(可救砖用)

关于华为g716的官方rom固件刷机包之前已经给大家分享过了,这一次主要是来说说如何刷官方的rom固件包吧,华为手机的官方固件包相对于其它手机来说刷入的方法比较简单一些,直接强刷就可以了,同时这个强刷的教程还可以用来救砖用的&a…

(简单)华为G7plus RIO-UL00的Usb调试模式在哪里开启的流程

经常我们使用pc接通安卓手机的时候,如果手机没有开启Usb开发者调试模式,pc则无办法成功检测到我们的手机,有时候我们使用的一些功能强大的应用好比以前我们使用的一个应用引号精灵,老版本就需要打开Usb开发者调试模式下使用&#…

华为路由器配置子卡端口速率

华为路由器配置子卡端口速率 用户可依据端口速率要求设置子卡工作模式。 背景信息 CR5DP2C1HF70子卡端口支持155M和622M两种工作速率,即CR5DP2C1HF70子卡支持2155M和1622M两种工作模式。用户可以根据端口数量和端口速率要求修改子卡的工作模式。 该配置任务仅在Ad…

华为交换机配置基础命令

1、创建vlan&#xff1a; <Quidway> //用户视图&#xff0c;也就是在Quidway模式下运行命令。<Quidway>system-view //进入配置视图 [Quidway] vlan 10 //创建vlan 10&#xff0c;并进入vlan10配置视图&#xff0c;如果vlan10存在就直接进入vlan1…