一、数据库
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
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!