# 新大陆优化方案
## 现状
- 商户大量拓展,随之带来业务量上升,系统的承载能力也需提高一个量级
- 交易系统承载的服务过多,一旦宕机会造成所有服务阻断
- 部分系统参数设置不合理,有优化空间
## 目标
- 优化操作系统与业务平台参数
- 按业务的维度独立拆分,使其互不干扰
- 优化集群服务器组数量
- 满足未来量级的业务量
## 物理架构(当前)
## 参数调优
> 目的:提高当前系统的稳定性
- 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. 部署方式:每组服务器均采用全量部署,但只会启用容器相对应的服务,配合负载设备针对不通的业务作切换策略