APP下载

GeoEast数据库调优技术研究与应用

2019-07-08张洁赵玉梅史哲张红杰张卫华尹龙

计算机时代 2019年5期
关键词:Oracle数据库

张洁 赵玉梅 史哲 张红杰 张卫华 尹龙

摘  要: 随着地震勘探精度不断提高,野外勘探数据量逐年增大,GeoEast系统中运行的项目数据量呈PB级增长。Oracle服务器负载过重导致假死和死机、监听服务异常给GeoEast项目的正常运行带来了重重困难。针对上述问题,从GeoEast数据库调优技术的研究入手,分析造成Oracle负载重的各项因素,以及对不同场景下监听状态的判断等,归纳出一些数据库调优技术和方法,以作参考。

关键词: GeoEast; Oracle数据库; Oracle监听; 作业调度

中图分类号:TP311.5          文献标志码:A     文章编号:1006-8228(2019)05-12-04

Abstract: With the increasing accuracy of seismic exploration, the amount of field exploration data has increased year by year, and the amount of project data running in the GeoEast system has increased by PB level. Excessive load on the Oracle server leads to suspended animation and crash, and the abnormality of the listening service brings difficulties to the normal operation of the GeoEast project. In order to solve above problems, this paper starts with the research of GeoEast database tuning technology, analyzes the factors that cause the heavy load of Oracle and the judgment of the monitoring state in different scenarios, and summarizes some database tuning techniques and methods for future reference.

Key words: GeoEast; Oracle database; Oracle listener; job scheduling

0 引言

近年来,随着油气勘探的不断深入,油田开发对地震数据的精度要求越来越高,地震勘探逐步朝着高密度、宽频带、全波场方向发展,地震勘探数据量呈几何级数增长。GeoEast系统作为国内首款由中国石油集团东方地球物理公司自主研发的大型地震资料处理解释一体化软件[1],在广泛应用于海量地震数据处理的同时,也面临着一些挑战。在GeoEast系统中,Oracle数据库起着至关重要的作用。其数据库保存了所有项目、工区的信息,以及需要进行大量计算的近地表信息。在GeoEast软件中,几乎所有的操作都要通过数据库来进行。一旦数据库中有大量运算产生,就会使数据库节点发生堵塞甚至假死,造成整套GeoEast系统停滞或者无法使用。如果数据库因异常中断或服务器死机等原因而发生损坏,将会对项目造成致命的后果。为了提高GeoEast系統运行效率,需要结合生产现状对数据库调优技术进行分析与研究,以满足GeoEast海量数据处理的需求。

1 GeoEast数据库负载的自动控制

目前一套数据库服务器上往往有多个GeoEast项目同时运行,生产项目所使用的集群计算节点数量多达上百台,项目总数据量呈PB级,同时运行的作业数量成百上千[2],这些都给数据库服务器的运行带来了巨大的压力。针对这些问题做了大量的研究与测试,并提出了一定的优化技术解决方案。

1.1 存在的问题

在GeoEast使用中,数据库服务器往往出现CPU负载大、内存消耗大、数据库连接进程多等现象,产生这种现象的根本原因是由于系统中同时有大量的作业在运行,服务器负载过重,造成系统反应慢甚至服务器死机[3]。情况严重的话会导致整套集群所有计算节点全部空转、GeoEast软件无法进行交互操作、所有作业全部停滞无法运行等后果。

1.2 负载控制解决方案

1.2.1 GeoEast数据库负载影响因素分析及阈值设置

通过对影响GeoEast数据库负载的因素进行大量的测试与分析,归纳总结出四种与数据库服务器负载紧密相关的主要因素:数据库进程数、系统负载、CPU利用率以及内存利用率。对各项因素设置高低阈值范围。

⑴ Oracle进程数:数据库相关进程总数。GeoEast系统在作业多、数据量大的情况下会与数据库之间频繁地进行通讯,产生多个访问oracle数据库的进程。如果数据库进程数过多,则会对软件、oracle服务器产生巨大的压力。结合GeoEast大数据的处理现状,经过反复的测试和运用,在满足生产和机器性能的条件下建议将该因素低阈值设置为13500,高阈值设置为14000。

⑵ 系统负载:系统CPU繁忙程度的度量,即一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息。若服务器核心数为N,则建议将负载指标低阈值设置为N,高阈值设置为N+2。该指标可根据设备实际配置和作业运行情况进行调整[4]。

⑶ CPU利用率:程序在运行期间实时占用的CPU百分比。建议将GeoEast数据库服务器CPU利用率低阈值设定为70%,高阈值设定为80%,超过高阈值后系统响应变慢,整体性能有明显下降。

⑷ 内存利用率:进程实际所开销的内存百分比。当软件与数据库之间的通讯进程较多时,会出现内存被耗尽而去调用swap交互区的情况,从而直接影响到软件系统的整体性能,无论是作业的速度还是软件的交互效率,都会受到严重的影响。建议设置内存利用率低阈值80%,高阈值90%。

1.2.2 GeoEast作业调度机制

GeoEast系统中作业的调度与分发是通过GJSF(GeoEast Job Scheduling Facility)系统实现的。作业调度主控程序jsfserver负责监听各个计算节点的资源连接请求,同时负责与各节点控制程序和各控制台程序进行通信,完成作业/节点的管控、管理命令的执行,以及各种事件的派发等。计算节点控制程序nodectrl负责收集本节点以及本节点上所有活跃作业的资源使用状况,监控各作业的运行状态,收集各作业的标准输出,并以报告的形式发送给调度服务器;负责执行调度服务器发送的各种系统管理命令和作业管理命令;负责与协同式作业进行通信,完成相关消息的接收、转发和处理[5]。如果可以根据数据库服务器实时的运行状况动态地控制系统中的作业调度,在数据库负载高的时候将调度中新分配的作业状态转为queue排队等待状态,在数据库负载降低的时候将排队的作业恢复成active正常运行状态,可有效降低因作业数量过多而可能造成的服务器死机的风险。

1.2.3 通过作业调度控制数据库负载

根据上面总结的四种与数据库负载相关的主要因素,通过程序的编写,对各项指标设置高低阈值,从而动态控制服务器上的作业调度,实现数据库负载的自动调节(图1)。

每个因素指标都有高、低两个阈值,当任意一项指标达到高阈值时,服务器会挂起GJSF作业调度;当所有指标回落到低阈值以下时,服务器自动恢复GJSF作业调度。通过控制作业数量避免数据库服务器超负荷运行,从而保证整套GeoEast系统正常运行。

1.2.4 过期进程清理

GeoEast一些过期却没有正常退出的进程往往占用了大量的数据库进程,如图2中,一个打开超过半个月的交互界面没有正常退出占用了312个数据库连接数。这一类型的过期进程如果在系统中大量存在也会造成数据库进程过多导致数据库服务器性能下降。

针对这一类情况,通过编程实现每天固定时间自动查杀超过7天的sjob、thjob等作业和GeoSeismicView、jobeditor、GeoJobConsole等进程,释放一些不需要的数据库进程。

1.3 应用效果

通过负载自动调节技术,数据库服务器假死或死机的频率大幅降低,对数据库服务器进行监控可以看到,调优前数据库服务器CPU的系统开销极大,而用户实际开销很小,内存损耗大,swap分区占用率高,整个系统响应速度缓慢。而调优后各项数值都明显下降,数据库服务器死机风险大大降低,系统的运行效率提高,达到了满意的效果(图3)。

2 GeoEast数据库监听进程的自动控制

2.1 研究背景

2.1.1 数据库监听的作用

数据库监听进程用于监听所有来自客户端的连接请求,并提供处理数据库服务方面的请求。该进程负责监听用户的连接请求,每当收到一个用户请求,监听器进程就会创建一个影子进程,然后把用户请求转交给这个影子进程,由影子进程继续完成用户提交的各种命令。一旦监听进程把用户转交给影子进程,监听进程的任务就算完成了,会继续去监听下一个用户请求。

2.1.2 数据库监听故障的影响

在GeoEast系统中,数据库监听一旦出现故障,会导致作业与数据库连接异常、用户打不开文件及应用模块、GeoEast作业出错、已打开的geoeast主控无响应等情况,导致整套软件无法正常运行[6]。

2.2 监听自动控制的实现

2.2.1 监听状态四种场景

根据监听服务的运行状态、监听进程个数的判断可以将数据库的监听状况大致分为以下四种场景:

⑴ 监听服务运行正常,监听进程个数异常;

⑵ 监听服务运行异常,监听进程个数正常;

⑶ 监听服务运行异常,监听进程个数异常;

⑷ 沒有检测到监听服务。

四种场景下监听的状态各不相同,需要针对实际情况进行监听的动态控制。

2.2.2 监听服务状态判定

通过程序的编写,对数据库监听服务状态是否正常进行检查,再对监听数量进行检查(见图4),根据不同场景选择是否启动、停止、重启监听服务,并生成监听检查日志。

2.3 应用效果

通过对监听服务自动控制,可以实现不同状态下监听服务的保护。

应用1:监听状态正常,但监听进程个数异常,自动杀掉多余的监听进程。

应用2:监听状态异常,但监听进程个数正常,自动重启监听进程。

应用3:监听状态异常,且监听进程个数也异常,自动重启监听进程,并杀掉多余的监听进程。

应用4:当没有检测到监听进程时,自动启动监听进程。

3 结束语

随着地震资料两宽一高处理技术的不断进步和野外原始数据量的不断增大,随之而来的海量数据给数据库服务器带来的各种挑战和影响一直是GeoEast系统运维工作的一个难点。本文经过不断的摸索与研究,通过阈值检测控制作业调度的方法实现了GeoEast数据库负载的自动控制,通过不同场景下监听状态与个数的扫描,实现了数据库监听进程的自动控制,大大降低了GeoEast数据库故障率,提高了数据库的运行效率。该技术适用于所有的GeoEast数据库服务器,具有良好的推广应用前景。此外,在GeoEast数据库参数调优方面还存在提升空间,有待于我们结合实际生产进一步探索与研究。

参考文献(References):

[1] 徐少波,白雪莲,曾强,林茂春,黄燕,潘焕革.GeoEast地震数据处理解释一体化软件系统[J].石油工业计算机应用,2016.3(24):6-P11

[2] 尹龙,张卫华,程实,郭冶,梁妍,牛犇.大规模计算机集群在地震勘探资料处理中的应用探讨[J].计算机时代,2016.8:1-P3

[3] 龚莉,赵玉梅,张红杰,郑玉霞,刘宗祥.GeoEast海量数据处理资源优化配置技术研究与应用[J].计算机光盘软件与应用,2014.6:101-103

[4] 陈继红,赵书华,祝宽海,王仕检.优化系统配置提高GeoEast系统运行效率[J].物探装备,2010.4(20):219-222

[5] 罗刚,陈继红,孙孝萍,周坤,杜吉国.大规模异构集群地震作业调度与资源管理系统的设计与实现[J].石油地球物理勘探,2017.52:200-206

[6] 刘峰.Linux下Oracle集群常见问题及解决策略[J].计算机光盘软件与应用,2012.6:38-39

猜你喜欢

Oracle数据库
Oracle数据库安全管理策略的优化
Oracle数据库应用问题与解决方案分析
一种Oracle数据库表空间监控方法
《Oracle数据库》课程教学模式探究 
基于ORACLE数据库应用系统的优化途径研究
虚拟机技术在Oracle数据库中的探讨与应用研究
Oracle数据库备份与恢复的理论基础
Oracle数据库性能调整与优化分析
Oracle数据库查询语句的优化研究
微课教学模式在Oracle数据库课程中的应用