Files
2018-09-04 16:29:50 +08:00

5.6 KiB

新大陆优化方案

现状

  • 商户大量拓展,随之带来业务量上升,系统的承载能力也需提高一个量级
  • 交易系统承载的服务过多,一旦宕机会造成所有服务阻断
  • 部分系统参数设置不合理,有优化空间

目标

  • 优化操作系统与业务平台参数
  • 按业务的维度独立拆分,使其互不干扰
  • 优化集群服务器组数量
  • 满足未来量级的业务量

物理架构(当前)

参数调优

目的:提高当前系统的稳定性

  • JVM参数(内存、缓存、优化参数等)

    jboss5/bin/start.sh

    -Xms4096m -Xmx4096m -XX:MaxPermSize=512m
    
  • 各接入服务的最大线程数、超时时间

    待分析

  • JBoss GC设置

  • JBoss 数据库连接设置

    oracle-ds.xml

    <min-pool-size>100</min-pool-size>
    <max-pool-size>200</max-pool-size>
    
  • 文件打开数量

    /etc/security/limits.conf

    *       soft    nproc       10240 
    *       hard    nproc       10240 
    *       soft    nofile      65535 
    *       hard    nofile      65535 
    

    /etc/security/limits.d/90-nproc.conf

    *          soft    nproc     10240 
    root       soft    nproc     unlimited 
    
  • POS接入超时时间与最大线程数优化

    server.xml

    <Connector port="8080" maxThreads="100" acceptCount="100" connectionTimeout="20000" /> 
    
  • EPC平台优化

    conf/sys.properties

    ecp.plt.sys_stat=NONE
    ecp.plt.log_level=INFO 
    ecp.plt.run_stat=NONE
    
  • JMS队列优化

    p.jmssvr

    <property name = "maxThreads"  value = "300"/>
    <property name = "minThreads"  value = "100"/>
    <property name = "timeOut"     value = "10"/>
    
  • SQL语句优化

    根据DBA给出的AWR报告进行分析,优化存在性能问题的SQL

    • 流水表中所有的SQL语句加上AC_DT来强制走分区

      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. 部署方式:每组服务器均采用全量部署,但只会启用容器相对应的服务,配合负载设备针对不通的业务作切换策略