jouypub.com

应用性能优化列表

2018-08-08  本文已影响3人  JouyPub

应用开发完了,但是随着用户规模的上升,数据量的积累,系统会越来越慢,性能优化将会伴随着项目一直持续下去

1、总原则

2、环境准备

保证开发环境、测试环境、验证环境、正式环境的配置一致,包括但不限于以下内容:

  1. 操作系统版本,尽量大版本一致,系统基本配置预估(CPU,硬盘,带宽)
  2. 系统参数配置一致,TCP内核参数,网卡参数及多队列绑定,IO&Swap内核参数,ulimit资源限制,线程栈大小等
  3. DNS指向,host配置一致
  4. 目录配置,应用目录,日志目录,数据目录,依赖包目录
  5. 软件配置一致,python版本,python依赖,Java版本,JVM调优参数,Tomcat版本、配置,NodeJs版本,数据库版本等
  6. 服务器监控,应用监控
  7. 扇入模型:平时与高峰期的流量估算,各接口的流量比例,响应时间要求
  8. 扇出模型:各接口对远程服务、数据库、缓存、消息系统的调用比例,响应时间估算。

3、数据库

  1. 各环境的数据库配置保持一致
  2. 禁用存储过程,函数,触发器,外键约束。
  3. 各个环境的数据库索引保持一致
  4. SQL语句规范
  5. 配置SQL执行的超时

3.1 事务

3.2 连接池

连接池的配置:

4、缓存

4.1 多级缓存

4.2 综述

4.3 堆内缓存

选型:

4.4 堆外缓存

选型:

4.5 Memcached

​客户端:

数据结构:

4.6 Redis as Cache

Redis拓扑:

服务端:

客户端:

数据结构:

命令:

5、服务调用

5.1 接口设计

  1. 尽量少交互的原则:
  1. 尽量少数据的原则:
  1. 二进制数据优于文本数据

5.2 RESTful

5.3 自家RPC框架

每家的RPC框架特性不同,但考虑点都类似。

6、消息异步

6.1 选型

6.2 Kafka

6.3 RabbitMQ

7. 日志

7.1 综述

7.2 内容

7.3 异步日志

8、工具类

8.1 JSON

FastJson:

Jackson:

8.2 二进制序列化

需要定义IDL的PB与Thrift,不需要定义的Storm等用的Kyro 都可选择,其他一些比较旧就算了。

8.3 Bean复制

在VO,BO之间复制时,使用Orika(生成代码) 或 Dozer(缓存反射),不要使用需要每次进行反射的Apache BeanUitls,Spring BeanUtils。

8.4 日期

9、Java代码优化 与 业务逻辑优化

上一篇下一篇

猜你喜欢

热点阅读