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

news2024/11/16 5:47:47

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

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

  例如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.coloradmin.cn/o/682959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AI底层逻辑】——篇章3(上):数据、信息与知识香农信息论信息熵

目录 引入 一、数据、信息、知识 二、“用信息丈量世界” 1、香农信息三定律 2、一条信息的价值 3、信息的熵 总结 引入 AI是一种处理信息的模型,我们把信息当作一种内容的载体,计算机发明以前很少有人思考它的本质是什么。随着通信技术的发展&a…

【C++从入门到放弃】模板进阶——非类型模板参数、类模板的特化、模板的分离编译

🧑‍💻作者: 情话0.0 📝专栏:《C从入门到放弃》 👦个人简介:一名双非编程菜鸟,在这里分享自己的编程学习笔记,欢迎大家的指正与点赞,谢谢! 模板进…

行业报告 | 人工智能现状报告(中)

原创 | 文 BFT 机器人 03 行业 与NVIDIA的GPU相比,后起之秀的AL芯片公司还有机会吗? NVIDIA公司的FY2021数据中心收入为106亿美元。在2021年4月,他们确认了32.6亿美元,按年度计算,这比排名前二的人工智能半导体初创公司的估值总和…

Android 14 新功能:区域偏好 Regional Preferences

翻译自 https://alexzh.com/regional-preferences-in-android-14/ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9YLBwPZs-1687502002096)(/Users/ellisonchan/Nutstore Files/ellison-wiki/docs/文章输出/原创/locale/android14-base-locale.png)]…

微信管理系统太多?该如何选择

“您的手机号就是您的微信号吗?我可以加您微信,然后给您发送我们的产品资料和报价。” 毕竟微信是一个月活跃用户超过10亿的应用,成为企业员工,尤其是销售人员沟通联络的首要选择,即使有其他专用办公工具,…

idea中使用java断言——java笔记

在 Java 中,断言是一种用于检查代码中是否满足特定条件的机制。它可以用来确保程序在开发和测试阶段的正确性,并且可以在出现错误时提供有用的错误信息。 断言在 Java 中由关键字 assert 表示,其语法为: assert condition;或者 …

6.Java的JDBC编程

文章目录 🌆1. 数据库编程🌆🏯1.1数据库编程的必备条件🏯🏰1.2下载驱动包🏰⛺️1.3导入驱动包:⛺️🏭1.4编写JDBC代码🏭🗼1.4.1数据库插入操作(在idea中用Jav…

《Opencv3编程入门》学习笔记—第七章

《Opencv3编程入门》学习笔记 记录一下在学习《Opencv3编程入门》这本书时遇到的问题或重要的知识点。 第七章 图像变换 图像变换:即将一幅图像转变成图像数据的另一种表现形式。 一、基于OpenCV的边缘检测 OpenCV中边缘检测的各种算子和滤波器:Can…

【雕爷学编程】Arduino动手做(125)---WT588D语音模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

Linux缓冲区续集——手撕fopen、fwrite、fflush、fclose等C库函数

目录 头文件: 接下来就是设计这四个函数:Mystdio.c 重点讲一讲_fflush函数的底层实现原理: 所以数据内容的经过如下: 总结: 执行——测试写好的这4个函数: 运行结果: 修改测试代码&#xff…

ASEMI快恢复二极管MUR80100PT功能和应用实用指南

编辑-Z MUR80100PT是一种高性能、超快恢复二极管,设计用于各种应用,包括电源、逆变器和电机控制系统。本文将提供一个全面的指南,以了解MUR80100PT的特点和应用,以及它在提高电子设备的效率和可靠性方面的重要性。 MUR80100PT的特…

使用vite创建vue3、react项目

一、使用vite需要的环境 node: 14.18 , 16 vite官网:https://cn.vitejs.dev/guide/ 如上图、官网上明确给出了提醒,要使用vite搭建项目,需要node版本在14.18 二、使用vite创建vue3项目 1. 使用命令启动vite创建项目 使用 NPM: $ npm cr…

开始使用Dotnetty高性能网络库进行网络通讯

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不是…

深度:激光和光纤诞生记

光子盒研究院出品 导读:20世纪50年代以来,科技领域掀起了一场光学革命,激光和光纤的诞生,带来了革命性突破。事实上,激光和光纤的诞生也是第一次量子革命的范畴,因为这些技术的发展是基于对量子规律的观测和…

Java集合之LinkedList详解

Java集合之LinkedList 一、LinkedList类的继承关系1. 基类功能说明1.1. Iterator:提供了一种方便、安全、高效的遍历方式。1.2. Collection:为了使ArrayList具有集合的基本特性和操作。1.3. Queue: LinkedList是一种队列(Queue)数…

I/O error on POST request for “...“ PKIX path building failed的解决办法

异常: 项目中需要用RestTemplate调三方接口,url是https开头加密的。postman可以调通,代码提示没有证书,具体如下: [ERROR][2023-06-25 10:41:16,574][com.peraglobal.restInterface.controller.PLMController]I/O err…

MySQL如何在Centos7环境安装:简易指南

目录 前言 一、卸载不要的环境 1.检查本地MySQL是否正在运行 2.停止正在运行的MySQL 二、检查系统安装包 三、卸载这些默认安装包 1.手动一个一个卸载 2.自动卸载全部 四、获取mysql官方yum源 五、安装mysql yum源,对比前后yum源 1.安装前 2.安装中 3.…

MySQL进阶SQL语句之函数运用

目录 1.select(显示表格中一个或数个字段的所有数据记录) 2.distinct(不显示重复的数据记录) 3.where(有条件查询) 4.and 、or(且、或) 5. in(显示已知的值的数据记…

浅谈单线程和多线程的异同

前两天有个面试,面试官问了我一个单线程和多线程的问题,情境如下: 面试官:你对单线程和多线程有什么看法? 我: 面试官: 我: 面试官: 我 现在先让我们来了解一下进程…

WS协议—介绍及原理

举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。 WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。它的最大特点就是&…