-
使用Nginx,通过nginx改造为集群模式并负载均衡。
单个tomcat能支持的并发量是有限的。如,tomcat默认最大并发数是150个,当然这个并发数配置是可以调大。单台机器的永远有他的瓶颈,通过Nginx集群模式,根据需求量新增服务器横向扩展。 -
使用redis
a) 使用redis截取额集群模式下用户session共享问题。
b)把频繁查询数据库且不经常变化的数据库数据,缓存到redis中。大大降低在高并发情况下的业务服务器的数据库服务器的压力。 -
处理慢sql
mysql支持配置慢sql时间,把超过设置时间的sql记录在日志文件中。通过处理这些慢sql,我们可以大大降低业务服务器的数据库服务器的压力。
a) 添加索引。处理数据库问题,最容易也是最有效的方法。当然要考虑,添加索引带来的插入操作性能问题和磁盘存储压力变大的问题。
a1) 考虑索引失效的情况: 索引like查询,如果最左边用%查询,索引会失效。右边就不会(也是匹配到的数量一定百分比一下的时候)。
参考: https://blog.csdn.net/jing956899449/article/details/106874480/
b2) 在联合索引中,如果没有最左边的索引字段,索引失效。(最左匹配原则)
参考:https://blog.csdn.net/qq_27559331/article/details/89632566
c2) 多个单列索引和联合索引的区别
参考:https://www.cnblogs.com/wyaokai/p/10836527.html
b) 避免使用链表查询。大部分情况,多表多查询比链表查询性能好很多。
c) 常关联查询的字段,可以考虑给表做冗余字段。
- 数据库读写分离
数据库主从配置,MySQL本身支持,配置几个命令参数就可以。
读写分离使用sharding jdbc(也可以做分库分表)。