实时视频地址解析服务,可以做哪些优化?

2014-06-19 18:51:25 +08:00
 dingyaguang117
做了一个视频地址解析服务,传入各大网站的视频地址,返回视频源地址。需要实时抓页面爬取计算出视频真实地址。通常一个解析请求,服务器需要发送3-5次HTTP请求才可以得到最终结果并返回。正常情况下一次解析时间根据网络状况和对外请求次数在0.5s-3s不等(当然也有超时的)。

现在的情况是:使用uwsgi + gevent 50协程 x 4核,理论并发量是200,不过当瞬间量大的时候,经常一个解析过程需要10s甚至1min,请求队列经常占满,导致服务不可用了。
因为会有大量的对外请求,在日志中发现DNS会经常有错误,所以自己做了简单的DNS缓存;还分析了各大网站视频的时效时间,做了缓存在Redis上。

对于这种在实时服务中,需要大量对外请求的服务,有没有什么可以优化的地方?架构调整,服务器参数等?
2764 次点击
所在节点    问与答
6 条回复
andyhu
2014-06-19 19:22:45 +08:00
我自己的站也做了视频原地址解析,不过不是对外开放的
建议改用node.js不知会不会好一些?
最近优酷改规则了,弄得好麻烦,还好用了node.js,直接用他提供的js api里的源码搞定了
话说楼主的站是否可以公开下网址?
andyhu
2014-06-19 19:24:13 +08:00
如果是node的话,至少应该不会出现队列满的情况。还是相当靠谱的
dingyaguang117
2014-06-20 01:02:17 +08:00
@andyhu 是app,确实悲剧,感觉node应该也差不多,具体性能问题不知道怎么分析,是带宽还是io并发的问题
andyhu
2014-06-20 01:13:50 +08:00
不行就直接爬硕鼠的呢
andyhu
2014-06-20 01:15:19 +08:00
node比python+gevent性能提升一个级别是肯定能做到的,不过不知具体原因卡在哪里,或者再做一个缓存。我对抓来的优酷地址都是缓存3-10分钟左右,一个视频有的要播一两个小时了,不是很必要完全做成实时的
dingyaguang117
2014-06-20 08:34:11 +08:00
@andyhu 真的吗? 感觉原理都差不多,都是协程呀~
我一直觉得瓶颈可能是是网络那块儿, 感觉大量访问一个站点时候,响应速度会变慢,不知道是不是视频网站的限制?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/118468

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX