V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dingyaguang117
V2EX  ›  问与答

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

  •  
  •   dingyaguang117 · 2014-06-19 18:51:25 +08:00 · 2774 次点击
    这是一个创建于 3821 天前的主题,其中的信息可能已经有所发展或是发生改变。
    做了一个视频地址解析服务,传入各大网站的视频地址,返回视频源地址。需要实时抓页面爬取计算出视频真实地址。通常一个解析请求,服务器需要发送3-5次HTTP请求才可以得到最终结果并返回。正常情况下一次解析时间根据网络状况和对外请求次数在0.5s-3s不等(当然也有超时的)。

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

    对于这种在实时服务中,需要大量对外请求的服务,有没有什么可以优化的地方?架构调整,服务器参数等?
    6 条回复    2014-06-20 08:34:11 +08:00
    andyhu
        1
    andyhu  
       2014-06-19 19:22:45 +08:00
    我自己的站也做了视频原地址解析,不过不是对外开放的
    建议改用node.js不知会不会好一些?
    最近优酷改规则了,弄得好麻烦,还好用了node.js,直接用他提供的js api里的源码搞定了
    话说楼主的站是否可以公开下网址?
    andyhu
        2
    andyhu  
       2014-06-19 19:24:13 +08:00
    如果是node的话,至少应该不会出现队列满的情况。还是相当靠谱的
    dingyaguang117
        3
    dingyaguang117  
    OP
       2014-06-20 01:02:17 +08:00 via iPhone
    @andyhu 是app,确实悲剧,感觉node应该也差不多,具体性能问题不知道怎么分析,是带宽还是io并发的问题
    andyhu
        4
    andyhu  
       2014-06-20 01:13:50 +08:00
    不行就直接爬硕鼠的呢
    andyhu
        5
    andyhu  
       2014-06-20 01:15:19 +08:00
    node比python+gevent性能提升一个级别是肯定能做到的,不过不知具体原因卡在哪里,或者再做一个缓存。我对抓来的优酷地址都是缓存3-10分钟左右,一个视频有的要播一两个小时了,不是很必要完全做成实时的
    dingyaguang117
        6
    dingyaguang117  
    OP
       2014-06-20 08:34:11 +08:00
    @andyhu 真的吗? 感觉原理都差不多,都是协程呀~
    我一直觉得瓶颈可能是是网络那块儿, 感觉大量访问一个站点时候,响应速度会变慢,不知道是不是视频网站的限制?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5979 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:14 · PVG 10:14 · LAX 18:14 · JFK 21:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.