基于国产化环境下文件数据存储的性能优化

2020-12-17 02:31宋建强
商品与质量 2020年50期
关键词:国产化线程服务器

宋建强

北京道达天际科技有限公司 北京 100890

基于国产化硬件下的文件数据存储应用是基于国产化硬件软件开发的创新应用,不仅能够提高在国产化硬件下开发的技术能力,而且能够提高对国产化的认识[1]。但是目前国产化硬件在性能以及CPU的处理能力和国际上通用的服务器比较存在一些不足的地方,尤其是在服务器性能和数据库数据存储。文件数据存储应用在国产化下硬件上部署经常出现一些性能问题,而且导致文件数据存储应用在国产化平台下的程序运行响应时间会大大增加,严重时会导致整个服务崩溃的不良后果。

为了使整个文件数据存储应用满足用户的使用要求,需要从软件以及硬件两个方面来进行考虑在国产化硬件环境如何提过整个程序的运行效率和速度,根据国产化硬件的特点和软件特点进行性能的优化。

1 性能层次

根据文件数据存储基应用的结构分析影响存储性能因素包括硬件优化和软件优化两个方向来进行优化,硬件优化包括服务器优化、存储优化两个方向,软件优化包括数据库优化、代码优化、线程优化、存储方式优化。下面性能优化根据性能层次所提出的方向来进行,通过分析得到国产化环境下的文件数据存储应用性能层次如图1

图1 文件数据存储应用性能层次

2 性能分析

目前国内的国产化硬件逐渐成熟,主流包含银河麒麟和中标麒麟为代表的操作系统、龙芯和飞腾的服务器。国产化数据库包括达梦数据库和神通数据库,并且这些国产化硬件和数据库在国内已经使用比较广泛[2]。

文章主要以银河麒麟操作系统、飞腾2000plus 服务器、神通数据库和国产化存储设备为环境基础来进行文件数据存储应用的性能不足分析,虽然国产化硬件配置比较高,但是依然出现以下问题:①CPU 占用过高导致数据存储以及访问速度效率变慢;②数据存储(I/O)读写请求速度越来越慢;③服务器内存很快占满,缓冲占用大量内存;④存储大数据文件存储效率变慢;⑤Java 垃圾回收频繁回收导致程序运行效率变慢。

3 性能优化

3.1 硬件性能优化

(1)服务器性能优化。文件数据存储应用比较消耗服务器内存会产生大量的缓存,采用定时清理缓存脚本定时清理缓存文件,保证物理可用内存保持在一定的大小[3]。查询服务器中不使用的进程和服务并且停止服务器中没有必要的进程和服务能够释放一定的内存和CPU 占用量提高服务器的性能。服务器TCP 进行优化提高网络吞吐量。对java 虚拟机的内存堆栈进行优化,根据服务器的内存设定合理java 虚拟机的内存参数最大值和最小值,能够提高文件数据的存储速度和能力。采取多服务器分布式集群部署,使用负载均衡机制保证程序在并发压力下的稳定和性能。

(2)存储性能优化。文件数据存储不能直接存储在服务器上,尤其是占用服务器根目录的空间,根目录空间大小影响整个程序的运行。最好的优化是采用NAS 挂载将文件存储在外部存储。NAS挂载的目录必须在服务rc.local 设置开启自启动防止服务器重启导致NAS 挂载断掉影响程序运行。NAS 挂载的存储空间必须要尽量大的空间,存储方式采用分布式分级分目录避免文件太多出现访问存储空间响应时间太长导致程序问题,尽大可能避免NAS 存储故障。

3.2 软件性能优化

(1)存储数据日志长度优化。文件数据存储管理为了保证存储文件的安全性,在文件归档上传以及下载采取文件的端点续传续传方式进行文件数据上传,为了保证文件数据的不丢失以及实时查看归档数据的状态以及归档大小,将文件数据存储时所有的日志实时存入ES 日志表中,但是当文件特别大的时候存储的文件存储日志也会变得特别巨大,这样会造成存储日志性能下降,导致整个存储应用降低。

为了解决这一性能问题,当存储特别文件数目特别多的情况不能一次性将所有文档归档存储,可以将日志存储信息分段存储,这样保证了存储日志信息的速度性能。

(2)内外部接口方式优化。各软件通过接口频繁调用获取信息会大大增加CPU 处理压力,太多的接口连接没有及时返回响应结果会导致大量接口处理排队中等待结果返回导致系统出现阻塞情况,系统卡死。

接口逻辑避免一次性查询所有数据的逻辑,采用分页查询的方式。接口逻辑中尽量避免使用大量循环的逻辑,大量循环会导致访问速度变慢。

(3)线程优化。一般文件存储应用采用多线程上传下载方式进行,线程是是在进程中执行单元,进程可以拥有一个线程或者多个线程,单线程的进程执行效率和运行效率比较低,多线程可以提高程序的运行效率提高系统资源的利用率提高系统的响应速度[4]。但是,多线程并非是可以无限制创建,需要根据系统本身的处理能力来创建线程,采用线程池方式,线程池适当设置线程大小,并且可以重复利用线程不新建线程减少创建线程带来的系统压力。及时对无用空闲的线程进行清理,防止空闲线程占用资源无法释放。

(4)程序代码优化。程序代码造成CPU 占用过高一般是因为代码中出现死循环或者近似死循环的代码,可以通过JDK 分析工具jastack 对占用CPU 过高的线程进行分析,排查占用CPU 过高的代码进行修改[5]。代码中大量使用循环或者嵌套循环的代码需要进行优化,因为大量循环会占用很高CPU 和内存。对于文件量特别大的数据,代码中不能一次性读取加载,一次性加载也会导致CPU 迅速增长并且占用大量内存。

(5)神通数据库优化以及表优化。根据神通数据库的特点,初始化数据库时,在服务器内存合理使用下尽可能大的设置数据缓冲区页面数;合理增大数据库排序缓冲区使数据库的数据排序速度到达最佳状态;合理增大日志缓冲区内存避免数据库日志过大影响程序的运行效率,设置定时定期清理数据库日志提高内存的使用效率提高性能。

数据库表要避免存储特别大的数据量数据,特别大的数据存储可能导致数据库效应慢,并且设计的表字段不能太多,必要时对表进行分表设计。

采用非关系性数据库对一些数据进行存储,优化SQL 语句都是数据库优化的方式。

4 性能优化案例

通过以上分析方法介绍,通过分析对影响文件数据存储性能的指标因素进行对应得优化并且在国产化硬件环境进行文件数据存储验证,得出性能优化前后的性能对比。

4.1 国产化硬件环境

国产化硬件环境如表1 所示

表1 国产化硬件环境

4.2 存储性能优化公式

影响存储性能的因素根据上述描述有服务器因素K1、数据库因素K2、存储因素K3、代码因素K4、网络因素K5,每一个因素都会导致存储性能变慢或者存储速度降为0,根据每个因素故障严重程度对故障分为无故障、轻微故障、一般故障、重大故障、严重故障、致命故障6 个级别故障、故障的严重程度越高,对存储性能的影响越大程序恢复度越低,相应的数值越低。根据因素故障对存储性能影响得出如表2 所示。

表2 各个因素故障表

如上表的影响存储性能各个因素故障的数值所示,对所有因素进行综合因素影响分析得到文件数据综合评定系数公式如下:

根据公式获得性能综合系数Pi,Pi越高性能越优文件数据存储效率越高,反之越差。

4.3 存储性能优化前后对比

(1)文件数据存储应用优化前:在进行数据归档时初始化切片参数设置成10 兆,进行数据归档数据每分钟平均存储归档速度统计,统计横坐标是时间为10 分钟、20 分钟、30 分钟、40 分钟、50 分钟情况下,平均每分钟文件数据归档的速度。性能优化前发现,文件数据存储速度在一定时间内增长然后一直直线下降直到文件数据归档速度变成0。根据综合性能系数评定,影响存储性能因素在程序运行一段时间内未出现致命故障,后期出现严重以上故障,导致存储速度降低。

(2)文件数据存储应用优化后:在进行数据归档时初始化切片参数设置成10 兆,进行数据归档数据每分钟平均存储归档速度统计,统计横坐标是时间为10 分钟、20 分钟、30 分钟、40 分钟、50 分钟情况下,平均每分钟文件数据归档的速度。性能优化后发现,文件数据存储速度在一定时间内增加然后然后速度趋于稳定。对影响存储速度的各个因素进行优化,优化后的因素处于最优状态,速度也稳定。

文件数据存储优化前后的每秒数据归档的速度分别如图2 和图3 所示:

图2 性能优化前

图3 性能优化后

5 结语

基于国产化下的文件数据存储是基于国产化硬件开发的一次具有实际意义的探索,研究了目前国产化硬件以及平台的缺陷以及不足,并且基于硬件不足分析了如何使存储效率得到最大的提升满足使用要求,同时从硬件和软件两个角度对数据等方面进行思考并且进行优化从而提升文件数据存储应用的使用性能,为之后其他应用在国产化硬件下开发提供一定的性能优化思路。

猜你喜欢
国产化线程服务器
基于国产化龙芯的动环数据采集系统
5G终端模拟系统随机接入过程的设计与实现
元器件国产化推进工作实践探索
创协会集成大行业 国产化树立里程碑
实时操作系统mbedOS 互斥量调度机制剖析
浅析体育赛事售票系统错票问题的对策研究
面向国产化的MCU+FPGA通用控制器设计
2018年全球服务器市场将保持温和增长
用独立服务器的站长注意了
定位中高端 惠普8路服务器重装上阵