Java高并发解决方案最全最详细总结(四)

316 阅读3分钟

「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战

10. Java程序优化

• 养成良好的编程习惯

• 不要重复创建太多对象

• 流/文件/连接 一定要记得在finally块中关闭

• 少用重量级同步锁synchronized,采用Lock

• 不要在循环体中使用try/catch

• 多定义局部变量,少定义成员变量

11. 数据库优化

⑴ 数据库服务器优化

修改数据库服务器的配置文件的参数,偏DBA (数据库管理员)

⑵ 数据库架构优化

• 将数据库服务器和应用服务器分离

• 读写分离:通过数据库主从架构解决,写数据时操作主库,读数据时操作从库,分摊读写压力

• 分库分表:扩容数据库,解决数据量容量问题

⑶ 数据库索引优化

• 建立合适的索引

• 建立索引的字段尽量的小,最好是数值

• 尽量在唯一性高的字段上创建索引,主键、序号等

• 不要在性别这种唯一性很低的字段上创建索引

⑷ SQL优化

SQL优化很多,可以总结出很多经验;

参考文章:blog.csdn.net/jie_liang/a…

⑸ 采用数据搜索引擎

solr / elasticsearch

12. Ning优化

调整配置文件参数

worker_processes 16; 
gzip  on;  #开启gzip压缩输出
events { 
worker_connections 65535; #极限值65535
  		multi_accept on; #开启多路连接
  		use epoll; #使用epoll模型
}
  1. Linux优化

优化Linux内核参数

修改/etc/sysctl.conf

blog.51cto.com/yangrong/15… 偏运维的职责

14. 网络优化

机房、带宽、路由器等方面优化

网络架构更合理

运维的职责

15. 前端优化

⑴  js优化

• 压缩变小

• 压缩工具

• 多个js合并成一个js文件,直接手动拷贝到一个文件中去,页面只加载这一个文件或者利用程序,比如controller,/aa/js?path=xxx.js,xxx.js

⑵ css优化

• 压缩变小

• 多个css文件合并成一个css文件

⑶ html页面优化

• 不要加载太多js和css

• js和css加载放在页面的尾部,从用户体验角度考虑的

• 页面上减少到服务的请求数

16. 压测

• 压测就是压力测试

• 在系统上线前,需要对系统各个环节进行压力测试,发现系统的瓶颈点,然后对系统的瓶颈点,进行调优。调优完成后,还需要考虑另外一些风险因素,比如网络不稳定,机房故障等。所以我们需要提前有故障预备方案,比如多机房部署容灾、路由切换等。故障预备方案做好后,还需要提前进行演练,以确保预案的有效性

• 压力测试工具:Apache JMeter / LoadRunner等,偏测试的工作

• CTO、架构师,技术团队、测试团队、运维团队、DBA 等共同完成

总结

完成以上的工作,我们才能实现一个 高并发、高性能、高可用 的“三高”分布式系统。