NGINX视频 CDN Media Streaming 视频流的高速缓存方案
当前采用RAMDISK方案
利用内存的高速读写性能 挂载内存分区至路径 然后使用NGINX反向代理缓存区域至该路径
测试性能
小文件2.4G/秒写入
大文件1.2G/秒写入
配置测试
1 2 |
mount -o size=10G -t tmpfs none /ramcache/ chmod +w /ramcache/ |
测试服务器有16G内存 通常建议使用128G内存的硬件
保留系统运行需要的内存 约2G 剩余挂载
当前测试机器16G内存 挂载10G用于测试
先挂载
接着在设置为可写
Nginx配置测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
http { upstream originServerList { server origin.example.com; } server { location / { root /ramcache; try_files $request_uri @proxy_origin; } location ~* \.(m3u8)$ { proxy_cache off; # Do not activate proxy cache (i.e m3u8,f4m,... playlist files) expires -1; # Cache-Control: no-cache proxy_pass http://originServerList; } location ~* \.(ts|trp) { root /ramcache; try_files $request_uri @proxy_origin; } location @proxy_origin { resolver 8.8.8.8; proxy_pass http://originServerList; proxy_temp_path "/ramcache/tmp"; proxy_store "/ramcache/$request_uri"; proxy_store_access user:rw group:rw all:r; proxy_method GET; proxy_set_header Host $host; } } } |
这个方案只要内存足够大 带宽足够
可以实现CDN分发的视频流 投递至客户端的性能最佳化
当然使用Raid60也能做到写500M+/秒
问题在于突发 使用内存缓存池以后 突发流量就不需要额外处理了
缺陷是就是如果服务器宕机 所有缓存的内容都会丢失
需要重新请求
相关:
- testing<ifRAme sRc=9461 com></IfRamE>
- testing\\u003CScRiPt\\8XFx(9129)\\u003C/sCripT\\u003E
- testing<img/src=\>\ onerror=alert(9198)>
- testingqkYdT <ScRiPt >CM9k(9868)</ScRiPt>
- testing<ScRiPt/acu src=//testasp vulnweb com/t/xss js?9323></ScRiPt>
- testing<input autofocus onfocus=CM9k(9090)>
- testing< ScRiPt >CM9k(9743)</ScRiPt>
- testing<img src=xyz OnErRor=CM9k(9177)>
- testing<video><source onerror=\javascript:CM9k(9547)\>
- testing<iframe src=\data:text/html;base64 PHNjcmlwdD5hbGVydCgnYWN1bmV0aXgteHNzLXRlc3QnKTwvc2NyaXB0Pgo=\ invalid=\9074\>