1. 场景
上线前,用户预估平均一天交易量约一万条,峰值约两万条。项目上线第一天,交易量有4万条。对于这4万条左右的交易信息的清算,花了一个多小时(清算时需要我们系统发指令给清算所,由清算所按照我们系统的指令进行清算,最后把结果通过MQ返回给我们)。用户提出以后交易的峰值可能达到一天5万条。
2. 任务
我们按照2倍的处理能力,定下一天10万条交易信息的处理量的目标。按照一条交易信息对应3个MQ消息计算,在清算窗口内(5点半开始到8点半关闭),需要处理30万个消息,平均每小时10万。同时观察到处理性能随着时间是线性逐步下降的。
3. 行动
系统主要涉及异步MQ通信(SSL和AMS双重加密),JVM处理,数据读取以及数据存储等方面,性能优化从这几个方面入手。
A. 数据存储方面 – 提升25%
a. 考虑到清算后是T+3交割,因此系统只要保存4天内的数据即可(热数据)。如果用户有查询需求,可以从归档表(冷数据表)进行查询。超过1年的数据则可以归集到离线数据库。这样处理后,由于热数据总量基本是恒定的,而且减小了数据总量,读数据的性能提高了20%左右,也不会随时间下降。
b. 经过研究,sybase针对主键会有clustered index,由于主键不是递增的,因此新的数据插入可能会导致数据存储物理顺序重排,因此把primary key改成unique key。此项修改系统性能约提升了5%。
B. JVM代码方面 – 提升30%
a. 系统从MQ收到消息后,是先落数据库,然后马上确认消息被消费掉。同时这里还会把每个消息以文件的形式写到NFS上。考虑到数据库和MQ在同一个事物里面,不需要担心数据的丢失,这里对“消息以文件的形式写到NFS”这个操作放到另外一个线程池里做异步化处理。系统性能提升约10%。
b. 每条消息被java代码处理后,原先系统会记录系统的操作日志(什么时候,处理了什么消息,处理结果是什么)。考虑到性能问题,以及这里是单个JVM,不涉及分布式,这个系统日志也做异步化处理。如果记录日志出错,则马上邮件通知运维组的同事马上处理。这里的关键是,只要系统的关键业务处理都正常,则系统的结果就是正确的,操作日志不应该影响这个业务的处理结果。系统性能提升约15%。
c. 清算所的消息的大小有明确上限,因此每个消息能承载的交易信息条数有上限。原先的上限设的比较小。我重新计算每条交易信息的字节数,再重新计算出每个消息能承载的交易信息的上限,把个数从1000调整到了1800。这个调整系统性能上升约5%。
C. 数据读取方面 – 提升100%
a. 针对每条SQL语句,我们找DBA帮忙分析,看是否hit到正确的索引上面。同时每天晚上系统停止运行后,都去重建索引,更新统计数据,确保索引会正常工作。
b. 优化SQL语句,例如有的select * from table A, table B,改成 select columnA, column from A inner join B on A.key=B.key。显式使用正确的join,效率会比fromA,B要好。
c. 减少数据库读取次数。原先的设计者可能考虑到数据量比较大,担心内存不够,因此所有待处理的消息不是全部一次性读取到内存里面。后来我经过测试,每条消息上限最大10K,按照最多30万条消息(实际上消息是分阶段过来的,不会一下子30万全部过来),总的内存占用不会超过3G,因此完全可以一次性把全部待处理消息全部读取进来,处理完后再处理下一批。
4. 结果
经过不断优化后再测试,每小时可以处理12万个消息,可以满足用户需求。主要感触是要有主人翁精神,本着用户至上的精神,要想尽办法满足业务的需求,给客户‘如沐春风’的感觉。在技术上,要知其然并知其所以然,理解背后的原理,灵活运用到项目上。只有对业务有深入的理解, 在技术上大胆假设,小心求证,才能让技术更好的为业务服务。
相关推荐
证券清算机器人就是RPA技术的一个典型应用场景,旨在通过自动化手段优化证券交易后的清算与结算过程。 **证券清算系统** 证券清算系统是证券交易的关键环节,它负责处理交易日结束后产生的所有交易记录,包括计算...
证券公司的法人清算系统是一个高效、精确的自动化解决方案,它集成了Microsoft Office的多种应用程序,如Access、Excel、Outlook等,以优化证券公司的清算流程。该系统的设计旨在提高生产效率,处理大量数据,并简化...
外汇支付清算系统是一种专门为金融机构设计,用于处理不同货币和交易的系统。此类系统在国际金融业务中扮演着至关重要的角色,因为它们能够提供支付便利、降低交易成本,并有助于防范支付风险。随着金融产品化趋势的...
本资源摘要信息涵盖了金融支付清算系统中的一些重要术语,涵盖了银行、证券、支付系统、清算结算等方面的知识点。 1. 咨询轧差(advisory netting):指在状态轧差中,对双方之间的债务进行轧差的协议。 2. 自动化...
证券交易清算系统 证券交易清算系统是法国金融系统的核心组成部分,旨在削减间结算的风险,并提高法国金融系统在全球中的有效性和开放性。该系统包括三个主要部分:法国管理的法国 RTGS 系统、高速支付系统 RGV 和...
证券公司清算是一个复杂的业务流程,涉及多个IT应用系统和业务要素。本文将详细讲解证券公司清算的概念、类型、业务流程和IT应用系统,帮助读者更好地理解证券公司清算的相关知识。 什么是一级清算、二级清算和三级...
综上所述,铁路清算分析系统的模拟环境数据库性能调整是一项综合性的任务,涉及到系统硬件配置、数据库参数设置、内存管理、磁盘I/O优化、CPU使用率控制以及网络性能的优化。通过精细的调优工作,可以确保清算分析...
SWIFT电文收报处理主要处理报文清算系统从ALLIANCE收取报文后台系统的一系列过程,包括:自动判断是否为头寸报文、自动识别该报文所属分行和所属外围业务系统,处理逻辑如下:为已清算转发报文,具体体现在转发报文...
"中国民生银行外汇清算系统详细设计说明书" 本文将根据给定的文件信息生成相关知识点,以下是详细的知识点解释: 商业银行业务介绍 商业银行是经营货币和信用业务的金融机构,它通过吸收存款、发放贷款、办理结算...
民生银行外汇清算系统的运行环境硬件为每个使用外汇清算系统的人员一台工作站,若干台工作站连接到并共享一台服务器。服务器配置为NT或UNIX服务器,安装SYBASE SERVER 11.5或更高版本。数据库名称为SWIFTDB,前台...
**IBSS清算系统**是一种专门为公共交通领域设计的清算管理系统。它集成了清算、交易处理以及客户服务等功能,旨在为公交公司提供高效、准确的清算服务及用户体验。该系统不仅能够处理日常的交易结算工作,还能针对...
在这样的背景下,债券市场作为金融体系的重要组成部分,对证券清算结算体系提出了更高的要求,特别是在提高处理能力和保障系统安全性方面。 中国证券登记结算系统同样显示了稳定的增长趋势,投资者数量的稳步提升,...
《XX银行外汇清算系统详细设计方案》是一份详细阐述银行外汇清算系统设计的文档,由深圳XX电脑有限公司在2000年12月为中国的中国民生银行编制。这份设计说明书全面覆盖了系统的各个方面,旨在建立一个高效、安全的...
证券公司的法人清算系统是金融行业中一个至关重要的环节,它涉及到证券交易所会员单位的交易结算,确保交易的准确性和效率。本文主要介绍了如何利用Microsoft Office应用程序的技术来构建一个高效的法人清算系统解决...
网上支付跨行清算系统报文交换标准.pdf
对IT金融业务的朋友了解我国国家第二代支付系统大有帮助,为您建立一个宏观架构。 中央银行支付清算系统; 第三方服务组织支付清算系统; 金融市场支付清算系统; 银行业金融机构支付清算系统; 以及上述系统之间的...
### 恒丰银行报文管理外汇清算系统架构与实施 #### 概述 随着全球化进程的加速以及金融市场的不断开放,商业银行面临着越来越多的外汇业务挑战。为了更好地满足客户的需求,提升自身竞争力,恒丰银行引入了先进的...
网上支付跨行清算系统业务处理办法.pdf
银行支付清算系统参考.pdf