文档章节

高并发解决方案

低调的糊涂虫
 低调的糊涂虫
发布于 2016/08/29 17:40
字数 610
阅读 200
收藏 12

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

 首先要了解高并发的的瓶颈在哪里?

     1、可能是服务器网络带宽不够

     2.可能web线程连接数不够

     3.可能数据库连接查询上不去。

     根据不同的情况,解决思路也不同。

  1. 像第一种情况可以增加网络带宽,DNS域名解析分发多台服务器。

  2. 负载均衡,前置代理服务器nginx、apache等等

    3.   数据库查询优化,读写分离,分表等等

 

  最后复制一些在高并发下面需要常常需要处理的内容:

  • 尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。

  • 用jprofiler等工具找出性能瓶颈,减少额外的开销。

  • 优化数据库查询语句,减少直接使用hibernate等工具的直接生成语句(仅耗时较长的查询做优化)。

  • 优化数据库结构,多做索引,提高查询效率。

  • 统计的功能尽量做缓存,或按每天一统计或定时统计相关报表,避免需要时进行统计的功能。

  • 能使用静态页面的地方尽量使用,减少容器的解析(尽量将动态内容生成静态html来显示)。

  • 解决以上问题后,使用服务器集群来解决单台的瓶颈问题。

 

思路:

 

1.动静态分离:前端静态页面使用cdn缓存,nginx里也能配置缓存和失效时间,后端使用redis,memcache等nosql

2.负载均衡:集群分流

 

多个请求操作同一条数据时,数据库设置的有行级锁。前一个请求获得锁之后,在执行完操作之后,下一个请求才能获得该条数据的锁。多个请求处于阻塞状态,这就是数据库的串行。

 

为了解决数据库的串行处理带来的阻塞状态,可以考虑减少事务锁时间,由程序调用数据库的增删改操作完成之后再返回给程序

影响的结果条来判断是回滚还是提交事务改成由数据库自己执行完增删改操作之后自己决定是提交还是回滚事务。也就是减少

事务锁的时间。

© 著作权归作者所有

上一篇: java对象之生
下一篇: 网络体系结构
低调的糊涂虫
粉丝 1
博文 58
码字总数 13550
作品 0
程序员
私信 提问

暂无文章

Redis面试题详解:哨兵+复制+事务+集群+持久化等

Redis主要有哪些功能? 1.哨兵(Sentinel)和复制(Replication) Redis服务器毫无征兆的罢工是个麻烦事,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。 Sentinel...

Java阿七
7分钟前
2
0
响应国家号召 1+X 证书 Web 前端开发考试模拟题

官方QQ群:736413913 1+x证书Web前端开发初级理论考试样题2019 http://blog.zh66.club/index.php/archives/149/ 1+x证书Web前端开发初级实操考试样题2019 http://blog.zh66.club/index.php/...

张帅个人博客
11分钟前
3
0
如何检查一个字符串在Objective-C中是否包含另一个字符串?

如何检查字符串( NSString )是否包含另一个较小的字符串? 我希望有这样的东西: NSString *string = @"hello bla bla";NSLog(@"%d",[string containsSubstring:@"hello"]); 但是我能找到......

javail
28分钟前
2
0
.NET Core开发的iNeuOS工业互联网平台,发布 iNeuDA 数据分析展示组件,快捷开发图形报表和数据大屏

目 录 1. 概述... 2 2. 演示信息... 2 3. 简单介绍... 3 4. 产品特点... 4 5. 价值体现... 5 1. 概述 经过一段时间的努力,iNeuDA产品组件已经开发和测试完成,现在正式上线。现在iNeuOS工业...

wxzz
30分钟前
3
0
在每个GROUP BY组中选择第一行?

顾名思义,我想选择以GROUP BY分组的每组行的第一行。 具体来说,如果我有一个如下的purchases表: SELECT * FROM purchases; 我的输出: id | customer | total---+----------+------ 1...

技术盛宴
44分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部