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

171 lines
5.6 KiB
Markdown

<img style="text-align:right" src="http://www.murongtech.com/Public/than/img/logo.png" width="100px" />
# 新大陆优化方案
## 现状
- 商户大量拓展,随之带来业务量上升,系统的承载能力也需提高一个量级
- 交易系统承载的服务过多,一旦宕机会造成所有服务阻断
- 部分系统参数设置不合理,有优化空间
## 目标
- 优化操作系统与业务平台参数
- 按业务的维度独立拆分,使其互不干扰
- 优化集群服务器组数量
- 满足未来量级的业务量
## 物理架构(当前)
<img style="text-align:left;" src="http://o6fhqh1oe.bkt.clouddn.com/20171206151254510792455.png" width="1000px" />
## 参数调优
> 目的:提高当前系统的稳定性
- JVM参数(内存、缓存、优化参数等)
> jboss5/bin/start.sh
```shell
-Xms4096m -Xmx4096m -XX:MaxPermSize=512m
```
- 各接入服务的最大线程数、超时时间
> 待分析
- JBoss GC设置
- JBoss 数据库连接设置
> oracle-ds.xml
```xml
<min-pool-size>100</min-pool-size>
<max-pool-size>200</max-pool-size>
```
- 文件打开数量
> /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
<Connector port="8080" maxThreads="100" acceptCount="100" connectionTimeout="20000" />
```
- EPC平台优化
> conf/sys.properties
```shell
ecp.plt.sys_stat=NONE
ecp.plt.log_level=INFO
ecp.plt.run_stat=NONE
```
- JMS队列优化
> p.jmssvr
```xml
<property name = "maxThreads" value = "300"/>
<property name = "minThreads" value = "100"/>
<property name = "timeOut" value = "10"/>
```
- 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做内部负载;增加一组服务器用于查询;现有交易服务器组中增加一台服务器做集群
- 修改后架构
<img style="text-align:left;" src="http://o6fhqh1oe.bkt.clouddn.com/20171207151261049697136.png" width="500px" />
- 查询服务器配置
节点 | CPU | JVM | 服务 | 描述
--- | --- | --- | --- | ---
查询-I | 4Core | 6G | 查询服务 | 访问读库
节点 | CPU | JVM | 服务 | 描述
--- | --- | --- | --- | ---
查询-II | 4Core | 6G | 查询服务 | 访问读库
2. 拆分当前POSP服务组,并且将 20Core,32G 的物理机分成4个容器用于拆分后的服务
- 修改后架构
<img style="text-align:left;" src="http://o6fhqh1oe.bkt.clouddn.com/2017120615125441359223.png" width="500px" />
- 服务器配置
节点名 | 用户名 | 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. 部署方式:每组服务器均采用全量部署,但只会启用容器相对应的服务,配合负载设备针对不通的业务作切换策略