1 什么是服务器并发处理能力?java
一台服务器在单位时间里能处理的请求次数越多 服务器的能力越高---并发能力越强算法
2.衡量服务器并发处理能力的方法服务器
- 吞吐率
- 吞吐率 是指单位时间内服务器处理请求的最大数
- 从服务器的角度来看 实际并发用户数能够理解为服务器当前维护表明不一样用户的文件描述符总数,也就是并发链接数,服务器通常会限制最多用户数,由于高于某一个值后,单个用户的响应时间会变慢,影响体验
- 对于服务器来讲 但愿支持的吞吐量越高越好,可是对于用户来讲 等待时间越少越好,这是个鱼与熊掌不可兼得的问题 最大并发数实际上是一个平衡点 这个平衡点是由用户的容忍最大时间决定的
- 压力测试
- 100个用户同时向服务器分别请求10次
- 1个用户向服务器请求1000次
- 以上两个对于服务器的压力是不同的,对于1个用户 连续发送请求其实是指发送一个请求并接收到响应再发送下一个请求,这样的对于1个用户向服务器发送1000次请求,服务器的玩咯接收到缓冲区只有一个请求,而对于100个服务器分别进行10个请求,服务器网卡接收缓冲区最多由100个等待处理的请求,显然这个时候服务器压力更大
- 压力测试前提考虑条件
- 并发用户数
- 总请求数
- 请求资源描述
- 请求等待时间
- 服务器平均
- 压力测试主要关心两个时间
- 用户平均等待时间
- 服务器平均请求处理时间
如何提升服务器的并发处理能力数据结构
- 提升CUP并发计算能力
- 多进程能够对CPU时间进行切片,轮流使用CPU CPU速度很快 在由限的进程下 时间切分后轮流分配给进程 用户是无感知的,而实际上,大多数进程的时间主要消耗在I/O上,现代计算机DMA技术可让CPU不参与I/O操做的全过程,好比进程经过系统调用,使得CPU向网卡或者磁盘等I/O设备发出指令,而后进程被挂起,释放CPU资源,等待I/O设备完成后再通知进程从新就绪
- 减小进程切换
- 进程切换,消耗时间是比较可观的,因此为了尽可能减小上下文切换次数,通常减小进程数,配合使用线程并配合其余I/O模型开设计并发策略
- 减小使用没必要要的锁
- 多个请求会抢占资源,若是同时抢占一个资源,通常就会使用锁机制来控制资源的竞争,过多的锁机制会致使处理的时间过长,因此尽可能减小没必要要的锁机制
- 减小内存分配和释放
- 服务器工做过程当中,须要大量的内存,使得内存的分配和释放尤其重要,能够经过改善数据结构和算法复制来适当减小临时变量的内存分配和数据复制时间,再java程序中,能够根据具体请款选择不一样的jvm 垃圾回收算法来提升jvm 内存分配和释放效率
- 考虑使用持久链接
- 改进I/O模型
- DMA技术
- 异步I/O
- I/O多路复用
- 改进服务器并发策略
- 改进硬件环境