一般说起并发的时候,我们到底在讲什么?
指的是 1 秒内“接收请求并且完成响应”整个流程的个数?还是 1 秒内“接受了请求,但是不一定完成响应,同时又没有把系统给搞垮”的个数?
举个例子,一个请求涉及到数据库操作,由于某些原因,这些数据库操作需要耗费 300ms-4000ms (优化余地不大),在这种情况下,如果说想提高整个应用的并发,可以从哪些方面入手?
1
zzgwxf 2018-05-13 11:15:18 +08:00
如果性能瓶颈在数据库,可以考虑对数据库架构做一些调整或优化。
|
2
lifespy 2018-05-13 11:18:32 +08:00 via iPhone
楼主搜索下并发和并行,应该就明白了
|
3
wangxiaoaer OP @zzgwxf #1 那一块可优化的余地不大,除非数据库配置升配,我关心的是应用层的。
|
4
csl1995 2018-05-13 11:23:20 +08:00 via iPhone
应该是指的完成的个数。提高并发能力可以试试分库
|
5
zzgwxf 2018-05-13 11:51:23 +08:00 2
@wangxiaoaer 高并发常是指,通过设计保证系统能够同时并行处理很多请求。提高系统并发能力的方式,方法论上主要有两种:垂直扩展( Scale Up )与水平扩展( Scale Out )。前者垂直扩展可以通过提升单机硬件性能,或者提升单机架构性能,来提高并发性,但单机性能总是有极限的,互联网分布式架构设计高并发终极解决方案还是后者:水平扩展。
互联网分层架构中,各层次水平扩展的实践又有所不同: ( 1 )反向代理层可以通过“ DNS 轮询”的方式来进行水平扩展; ( 2 )站点层可以通过 nginx 来进行水平扩展; ( 3 )服务层可以通过服务连接池来进行水平扩展; ( 4 )数据库可以按照数据范围,或者数据哈希的方式来进行水平扩展; 各层实施水平扩展后,能够通过增加服务器数量的方式来提升系统的性能,做到理论上的性能无限。 |
6
zzgwxf 2018-05-13 11:53:48 +08:00
|
7
watzds 2018-05-13 12:51:29 +08:00
你说的性能测试相关的并发请求,并发数是多少,不是并发两个字等定义的,还要具体考虑响应时间,成功率等等
https://coolshell.cn/articles/17381.html |
8
Mazexal 2018-05-13 15:32:33 +08:00
如果对于业务流程不长, 不是特别重要的数据库操作, 建议采用消息分发,消息队列进行操作
|