目录
(一)什么是服务器并发处理能力
(二)有什么方法衡量服务器并发处理能力
1.吞吐率
2.压力测试
(三)怎么提高服务器的并发处理能力
1,提高CPU并发计算能力
(1)多进程&多线程
(2)减少进程切换,使用线程,考虑进程绑定CPU
(3)减少使用不必要的锁,考虑无锁编程
(4)考虑进程优先级
(5)关注系统负载
(6)关注CPU使用率,除了用户空间和内核空间的CPU使用率以外,还要关注I/O wait
2,减少系统调用
3,考虑减少内存分配和释放
(1)改善数据结构和算法复制度
(2)使用内存池
(3)考虑使用共享内存
4,考虑使用持久连接
5,改进I/O模型
(1)DMA技术
(2)异步I/O
(3)改进多路I/O就绪通知策略,epoll
(4)Sendfile
(5)内存映射
(6)直接I/O
6,改进服务器并发策略
(1)一个进程处理一个连接,非阻塞I/O,使用长连接
(2)一个进程处理多个连接,异步I/O,使用长连接
7,改进硬件环境
(一)什么是服务器并发处理能力?
一台服务器在单位时间里能处理的请求越多,服务器的能力越高,也就是服务器并发处理能力越强
服务器的本质工作就是,争取以最快的速度将内核缓冲区中的用户请求数据一个不剩地都拿出来,然后尽快处理,再将响应数据放到一块又能够与发送数据的缓冲区中,接着处理下一拨请求。
(二)有什么方法衡量服务器并发处理能力?
1. 吞吐率
量化指标:吞吐率,单位时间里服务器处理的最大请求数,单位req/s
再深入一些,HTTP请求通常是对不同资源的请求,也就是请求不同的URL,有的是请求图片,有的是获取动态内容,有的是静态页面,显然这些请求所花费的时间各不相同,而这些请求再不同时间的组成比例又是不确定的,所以实际情况下的吞吐率是非常复杂的。
正因为这些请求的性质不同,所以服务器并发能力强弱关键在于如何正对不同的请求性质来设计最优并发策略。如一台服务器处理诸多不同性质的请求,在一定程度上使得服务器的性能无法充分发挥。而并发策略的设计就是在服务器同时处理较多请求时,合理协调和充分利用CPU计算和I/O操作,使其在较大并发用户数的情况下提供较高吞吐率。
另外,实际上多少用户同时发来请求并不是服务器所能决定的,一旦实际并发用户数过多,则势必影响站点质量。所以得出最大并发用户数的意义,在于了解服务器的承载能力,并且结合用户规模考虑适当的扩展方案。
在考虑用户模型时,用户访问web站点时通常使用浏览器,浏览器对于同一域名下URL的并发下载是多线程的,不过有最大限制的,所以前面说到的最大并发数,具体到真实的用户,可能不是一对一的关系。
而从服务器角度,实际并发用户数的可以理解为服务器当前维护的代表不同用户的文件描述符总数,也就是并发连接数。服务器一般会限制同时服务的最多用户数,比如apache的MaxClents参数。
这里再深入一下,对于服务器来说,服务器希望支持高吞吐率,对于用户来说,用户只希望等待最少的时间,显然,双方不能满足,所以双方利益的平衡点,就是我们希望的最大并发用户数。
2. 压力测试
有一个原理一定要先搞清楚,假如100个用户同时向服务器分别进行10个请求,与1个用户向服务器连续进行1000次请求,对服务器的压力是一样吗?实际上是不一样的,因对每一个用户,连续发送请求实际上是指发送一个请求并接收到响应数据后再发送下一个请求。这样对于1个用户向服务

本文探讨了服务器并发处理能力的概念,介绍了衡量并发处理能力的两个关键指标:吞吐率和压力测试。并详细阐述了如何提高服务器并发处理能力,包括提高CPU并发计算能力、减少系统调用、优化内存分配和释放、使用持久连接、改进I/O模型等策略。通过这些方法,可以有效提升服务器在高并发情况下的性能表现。
最低0.47元/天 解锁文章
599

被折叠的 条评论
为什么被折叠?



