Linux高性能服务器设计
探讨linux下高性能软件服务器的开发技术设计要点进程模型网络|O内存池连接池缓冲区定时器状态管理时间管理系统基础进程模型(1)Master-Multi Worker消息处理无需跨进程接受、处理与回复都在同一个 worker进程完成;充分利用CPU多核多个 Worker并行,且 worker之间互相独立,无锁;- worker实现较复杂worker内部包含网络|O处理,也包含逻辑处理,扩展起来较麻烦;惊群效应与负载均衡listen fd的惊群效应和 accep新连接的负载均衡需要仔细处理(轮转法、最小连接数等等)进程模型(2)Master-Multi Workerworker 1client请求处理与回复worker 2masterserver监控等Worker n进程模型(3)Master-Net Worker-Multi Logic Worker消息需跨进程处理·消息至少需要在两个进程之间交换处理充分利用CPU多核(仅限ogc处理部分)逻辑 worker能充分利用多CP∪核网络 Worke有可能成为瓶颈(可多线程化networker解决,但引入复杂性)worker实现较简单,控制较弱无论是哪种 worker,实现都比较纯粹,较容易扩展逻辑处理 worker对网络的控制能力相对较弱进程模型(4)Master-Net Worker-Multi Logic Workermaster初始化与监控等client请求处理与回复net workerlogic worker 1server消息队列或管道等logic worker 2网络|OEpo事件处理非阻塞 socket电平触发LT: server socket边缘触发ET: client socket数据收发读写 readv/writev,减少内核与应用交互次数发送文件 sendfile,减少内核与应用拷贝数据量进程之间异步通讯unix stream socket流式通讯,支持VFS操作,支持po‖共享内存天然异步,用户态读写,效率最高内存池主要分配 socket的应用态收发缓冲区空间快速分配:多规格定长块哈希带链表有效回收:LRU式回收碎片管理:动态分裂与合并使用大内存页 hugepage减少 TLB miss减少页表数量防止被SWap连接池静态构造连接池进程初始化时构建好资源额定量化,过载保护连接的标识正格单调递增的流水号socket fd(fd的进程唯一性)数据结构维大数组(一维映射)LRU组织,方便超时检查
用户评论