# 新大陆优化方案 ## 现状 - 商户大量拓展,随之带来业务量上升,系统的承载能力也需提高一个量级 - 交易系统承载的服务过多,一旦宕机会造成所有服务阻断 - 部分系统参数设置不合理,有优化空间 ## 目标 - 优化操作系统与业务平台参数 - 按业务的维度独立拆分,使其互不干扰 - 优化集群服务器组数量 - 满足未来量级的业务量 ## 物理架构(当前) ## 参数调优 > 目的:提高当前系统的稳定性 - JVM参数(内存、缓存、优化参数等) > jboss5/bin/start.sh ```shell -Xms4096m -Xmx4096m -XX:MaxPermSize=512m ``` - 各接入服务的最大线程数、超时时间 > 待分析 - JBoss GC设置 - JBoss 数据库连接设置 > oracle-ds.xml ```xml 100 200 ``` - 文件打开数量 > /etc/security/limits.conf ```shell * soft nproc 10240 * hard nproc 10240 * soft nofile 65535 * hard nofile 65535 ``` > /etc/security/limits.d/90-nproc.conf ```shell * soft nproc 10240 root soft nproc unlimited ``` - POS接入超时时间与最大线程数优化 > server.xml ```xml ``` - EPC平台优化 > conf/sys.properties ```shell ecp.plt.sys_stat=NONE ecp.plt.log_level=INFO ecp.plt.run_stat=NONE ``` - JMS队列优化 > p.jmssvr ```xml ``` - SQL语句优化 > 根据DBA给出的AWR报告进行分析,优化存在性能问题的SQL - 流水表中所有的SQL语句加上AC_DT来强制走分区 ```sql select * from t_hps_jnl where ac_dt > 'XXXXXXXX' and ac_dt < 'XXXXXXXX' ``` - 交易流水增加分区 > 交易流水需以交易日期创建分区,所有SQL需要增加分区条件 - 增加系统监控 > 梳理各种纬度的监控项并载入监控系统 - 磁盘空间占用率监控 - CPU占用率监控 - 内存占用率监控 - JVM内存监控 - 网络带宽监控 - 网络端口占用率监控 - 系统文件打开数量监控 - 交易增加超时时间 > 分析各交易的超时时间 - 历史交易记录的迁移 > 6个月之前的交易移植到历史库 ## 服务拆分方案 > 目的:满足未来百万级业务 1. 增加一组Nginx做内部负载;增加一组服务器用于查询;现有交易服务器组中增加一台服务器做集群 - 修改后架构 - 查询服务器配置 节点 | CPU | JVM | 服务 | 描述 --- | --- | --- | --- | --- 查询-I | 4Core | 6G | 查询服务 | 访问读库 节点 | CPU | JVM | 服务 | 描述 --- | --- | --- | --- | --- 查询-II | 4Core | 6G | 查询服务 | 访问读库 2. 拆分当前POSP服务组,并且将 20Core,32G 的物理机分成4个容器用于拆分后的服务 - 修改后架构 - 服务器配置 节点名 | 用户名 | CPU | JVM | 服务 | 描述 --- | --- | :---: | :---: | --- | --- 银行卡-I | pospadm | 共享20Core | 6G | 银行卡收单、SN同步 | POS扫码-I | qrpadm | 共享20Core | 6G | 微信、支付宝、银联 | 服务化扫码-I | soaadm | 共享20Core | 6G | 微信、支付宝、一码付 | 查询-I | qryadm | 共享20Core | 6G | 支付结果查询 | 预留,可以承担小部分流量,访问主库 节点名 | 用户名 | CPU | JVM | 服务 | 描述 --- | --- | :---: | :---: | --- | --- 银行卡-II | pospadm | 共享20Core | 6G | 银行卡收单、SN同步 | POS扫码-II | qrpadm | 共享20Core | 6G | 微信、支付宝、银联 | 服务化扫码-II | soaadm | 共享20Core | 6G | 微信、支付宝、一码付 | 查询-II | qryadm | 共享20Core | 6G | 支付结果查询 | 预留,可以承担小部分流量,访问主库 节点名 | 用户名 | CPU | JVM | 服务 | 描述 --- | ---- | :---: | :---: | --- | --- 银行卡-III | pospadm | 共享20Core | 6G | 银行卡收单、SN同步 | POS扫码-III | qrpadm | 共享20Core | 6G | 微信、支付宝、银联 | 服务化扫码-III | soaadm | 共享20Core | 6G | 微信、支付宝、一码付 | 查询-III | qryadm | 共享20Core | 6G | 支付结果查询 | 预留,可以承担小部分流量,访问主库 3. 部署方式:每组服务器均采用全量部署,但只会启用容器相对应的服务,配合负载设备针对不通的业务作切换策略