5.6 KiB
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个月之前的交易移植到历史库
服务拆分方案
目的:满足未来百万级业务
-
增加一组Nginx做内部负载;增加一组服务器用于查询;现有交易服务器组中增加一台服务器做集群
- 修改后架构
- 查询服务器配置
节点 CPU JVM 服务 描述 查询-I 4Core 6G 查询服务 访问读库 节点 CPU JVM 服务 描述 查询-II 4Core 6G 查询服务 访问读库
-
拆分当前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 支付结果查询 预留,可以承担小部分流量,访问主库
-
部署方式:每组服务器均采用全量部署,但只会启用容器相对应的服务,配合负载设备针对不通的业务作切换策略