软件系统优化项总结

一、数据库

1、分析工具
explain分析、SQLAdvisor、MySQLTuner

2、解决办法

合理的索引、
my.cnf调优(数据库连接释放时间、最大连接数、缓存大小)
主从同步、
分库分表、
NoSQL数据库、
搜索引擎、
热点数据主动添加缓存,
拆除连接查询

3、注意事项

1、mysql索引请慎重添加,如果使用了非必要的索引,可能会欺骗mysql的sql优化器,致使sql优化器再查询操作中,选择使用效率低下的索引,查询效率严重下降,更容易出现死锁。批量删除和更新也更容易出现死锁,尽量使用主键更新和删除。
2、高并发状态下mysql 数据库及其容易出现死锁。死锁很容易讲客户端的连接池中的连接全部耗尽,导致系统全面卡顿和崩溃。数据库死锁的释放时间不宜太长,如果出现死锁,系统容易出现卡顿或者崩溃,事务回滚等。
3、数据库text等长度较大的字段,容易拖累查询速度,建议在查询操作中,不返回长度较大的字段,否则很容器将服务器的磁盘IO占满,严重拖累查询效率。
4、数据库表设计中减少连接查询,连接查询效率较低。
尤其的pageHelper等分页语句中,在计算总条数时容易出现耗时很长的sql,建议单独设置计算条数的sql语句,将不用想计算分页的连接查询去掉。
并且优化产品设计,不设计like等模糊查询功能
5、null字段

二、java端

1、分析工具
jps、
jstack、
jstack来查看各个线程的调用堆栈
jstat、
JVM是否存在内存泄露问题。如何判断JVM垃圾回收是否正常
jmap、
JVM物理内存的占用情况的工具
jinfo、
查看Java进程的某些JVM参数,或者实时修改某些JVM参数
eclipse mat等工具使用以及故障排查

2、解决办法

1、连接池优化
2、尽量减少数据库连接,采用内存比较方法。
3、采用批处理
4、采用缓存
4、分布式、微服务架构

三、服务器端

1、tomcat 优化NIO模式、线程池、连接器、JVM 调优
2、采用动静分离
3、nginx反向代理

四、网络端

lVS软件:运行在操作系统内核态,可对TCP请求或更高层级的网络协议进行转发,因此支持的协议更丰富,并且性能也远高于Nginx,可假设单机的LVS可支持几十万个并发的请求转发
F5硬件:是一种负载均衡硬件,与LVS提供的能力类似,性能比LVS更高,但价格昂贵

DNS服务器:可配置一个域名对应多个IP地址,每个IP地址对应到不同的机房里的虚拟IP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值