什么是服务器并发处理能力
有什么方法衡量服务器并发处理能力
1. 吞吐率
2. 压力测试
并发用户数: 指在某一时刻同时向服务器发送请求的用户总数(HttpWatch) 总请求数 请求资源描述 请求等待时间(用户等待时间) 用户平均请求的等待时间 服务器平均请求处理的时间 硬件环境
用户平均请求等待时间(这里暂不把数据在网络的传输时间,还有用户PC本地的计算时间计算入内) 服务器平均请求处理时间
怎么提高服务器的并发处理能力
1. 提高CPU并发计算能力
多进程 & 多线程
fork()系统调用开销很大: prefork 进程间调度和上下文切换成本: 减少进程数量 庞大的内存重复:共享内存 IPC编程相对比较麻烦
减少进程切换
减少使用不必要的锁
考虑进程优先级
考虑系统负载
考虑CPU使用率
2. 考虑减少内存分配和释放
3. 考虑使用持久连接
4. 改进I/O 模型
DMA技术
异步I/O
I/O多路复用
epoll只告知就绪的文件描述符,而且当调用epoll_wait()获得文件描述符时,返回并不是实际的描述符,而是一个代表就绪描述符数量的值,然后只需去epoll指定的一个数组中依次取得相应数量的文件描述符即可。 这里使用了内存映射(mmap)技术,这样彻底省掉了这些文件描述符在系统调用时复制的开销。 epoll采用基于事件的就绪通知方式。其事先通过epoll_ctrl()注册每一个文件描述符,一旦某个文件描述符就绪时,内核会采用类似callback的回调机制,当进程调用epoll_wait()时得到通知
Sendfile
内存映射
直接I/O
5. 改进服务器并发策略
一个进程处理一个连接,非阻塞I/O
一个线程处理一个连接,非阻塞IO
一个进程处理多个连接,异步I/O
一个线程处理多个连接,异步IO
6. 改进硬件环境