基于对锁和多道程序设计的学习,本周编码实现了C/S 架构的文件传输系统,图Figure1 为系统架构,在1 主3 从的虚拟机集群部署程序。Worker 节点启动TCP 监听程序监听固定端口;Master 节点则发起TCP 连接请求,建立连接后发送文件名,待Worker 节点确认后即可发送文件数据。程序中设定收/发缓冲区为4096 字节切片,对应centos 系统默认的Blocksize。使用简单的取余运算实现文件传输goroutine 的均匀调度,并使用互斥锁保证同时只有一个goroutine 与Worker 节点监听端口建立连接。
衡量服务器程序性能的标准有吞吐量、响应时间、并发量等指标,在实验过程中主要测试响应时间,包括平均响应时间和百分位数。保持传输文件大小为64KB,逐步增大每个Worker 节点并发接收的文件个数(流入度),得出测试结果如Figure2。当Worker 节点入度为1000 时,平均响应时间为792.9ms,95 百分位数(TP95) 为1454.4ms,这表示超过95% 以上的文件传输都在1454.4ms时间内返回。随着入度增加,等待时延相应变长,平均响应时间持续上升。
控制Worker 节点入度为1000,开展文件大小从4KB 到1024KB 的文件传输实验,结果如Figure3 所示。平均响应时间从663.8ms 增大到5941.3ms,TP95 则从1143.7ms增长到15950.1ms。
点我-欢迎学习交流
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)