dingyaguang117
V2EX  ›  问与答

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

  •  
  •   dingyaguang117 · Jun 19, 2014 · 3219 views
    This topic created in 4442 days ago, the information mentioned may be changed or developed.
    做了一个视频地址解析服务,传入各大网站的视频地址,返回视频源地址。需要实时抓页面爬取计算出视频真实地址。通常一个解析请求,服务器需要发送3-5次HTTP请求才可以得到最终结果并返回。正常情况下一次解析时间根据网络状况和对外请求次数在0.5s-3s不等(当然也有超时的)。

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

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