1、应用高并发如何优化
- 架构优化
- 软硬负载均衡的使用
- 缓存的使用
- 快速读写的使用
- 处理复杂度比较高且可以剥离使用异步的,使用异步响应
- 代码优化
- 避免死锁
- 锁粒度的控制
- 线程池的使用:业务复杂度的控制
- 内存分配:避免大块内存的分配,避免内存泄漏的发生,避免递归调用,threadlocal使用时,在业务逻辑结束时,显示调用remove方法。
- cpu资源的使用:线程的合理分配及回收,优先级等的出让,IO模式的使用
- 异常的捕捉处理
- 一句话,高并发,就在于cpu的高度利用,以及io等的高度配合,所以阻塞模式如bio等是一个大大的阻碍,而同步计算时长时间耗时的处理
- 当然最终目的是,对用户或者调用方的及时响应
2、数据库怎么优化
- 存储优化
- 持久性:主备,避免单点问题
- 合适的存储引擎选取
- 合适的raid级别
- 网络及连接数、编码等参数的设置
- 访问优化
- 访问次数同获取内容量之间的折衷
- 链接的合理重复利用:常见连接池
- 读缓存优于读磁盘
- 建立合理的索引并利用
- 避免添加列的修改
- sql优化
- 合理利用索引
- fetch适当的数据:避免全部捞取,占用带宽
- 排序或者复杂逻辑尽量在程序部分使用
- 使用执行计划
- 对慢查询优化
- 分库分表的使用
- 缓存的使用:对于非实时性要求特别高或者统计类的数据展示,可以引入缓存
- nosql的使用:合理的使用
- 当然DBA的介入非常必要,专业。