历史版本的前端对dicom图像的加载是通过后端的flask的send_from_directory函数实现。
这里直接采用nginx方案,前端直接通过nginx下载dicom图像,减少了和flask的交互和多余的网络包结构。
测试环境A
环境为:1000M网络
图像:xx病人的图像(2107层,413M)
下载速度测试
方案 | 前端6并发 | 前端10并发 |
---|---|---|
采用flask的send_from_directory | 14.1 | 11.6 |
直接采用nginx | 11.9 | 10.2 |
结论:
采用nginx方案直接下载,相比flask的send_from_directory方案,可以节省15%的时间。
前端采用10并发,相比6并发,可以节省15%的时间。
如果采用nginx+前端10并发,并比 flask.send_from_directory+前端6并发,可以节省28%的时间。
后台资源消耗
采用flask的send_from_directory 非常消耗CPU,flask能使用的cpu(通过docker限制cpu数量),平均消耗在50%左右
直接采用nginx的方案,flask的cpu使用率为0, nginx在2000并发的情况下,nginx的cpu使用率为单核的20%左右,CPU消耗很低。
并发能力
采用flask的send_from_directory 方案,采用ab进行并发测试下载dcm图片,并发能力约为500。
直接采用nginx的方案,采用ab进行并发测试下载dcm图片,稳定并发能力约为2000。
每个用户在阅片时,最大的并发不超过10,这里以10作为计算。则2000的并发能力等价于200个医生同时访问。