missqxy

第一次处理大数据问题

  •  
  •   missqxy · Oct 15, 2018 · 3363 views
    This topic created in 2950 days ago, the information mentioned may be changed or developed.

    是这样,后台语言是 php。现在出现情况是:我公众号粉丝数据有 2 万多条 我现在想通过微信提供的接口获取男女信息统计男女比例。我业务逻辑是这样:先获取 openidList 大约是 1 万条数据,然后我再循环获取每位粉丝信息。我把男女数据放在变量中了,没有存数据库 。可是现在请求这个接口出现的情况是一直请求中, 然后过了一段时间 nginx 返回 502。 请教各位该如何处理。

    11 replies  •  2018-10-24 17:04:55 +08:00
    drush
    drush
    Oct 15, 2018
    1
    放 queue 里
    missqxy
    missqxy
    OP
    Oct 15, 2018
    2
    @drush 可以说明白点吗
    drush
    drush
    Oct 15, 2018
    3
    你现在应该是 execution timeout 或者唔够内存。
    建议将那个 list 里的 user 放到 queue 里, 后面再慢慢处理。
    yexiangyang
    yexiangyang
    Oct 15, 2018
    4
    试试多线程执行吧 老铁
    linauror
    linauror
    Oct 15, 2018
    5
    首先 curl 还是比较耗时间的,毕竟一个个请求的话,需要 1 万多次请求。可以改成批量获取,最多一次可获取 100 条。
    casparchen
    casparchen
    Oct 15, 2018 via iPhone
    6
    怕不是对大数据有什么误解哦
    missqxy
    missqxy
    OP
    Oct 15, 2018
    7
    @casparchen 这是单单一个公众号 所有公众号粉丝有 350 万
    hackerang
    hackerang
    Oct 15, 2018
    8
    @missqxy 你要做分页,多线程,性能不够的话加机器,不过你这个数据量确实不大。
    hackerang
    hackerang
    Oct 15, 2018
    9
    @missqxy 502 有可能是 nginx 的问题,要看日志。不过一直 pending 的话要调优,优化 sql,优化你的代码。如果放在内存里的话要保证机器性能是够的。
    xsir2020
    xsir2020
    Oct 15, 2018
    10
    nginx 在请求微信接口返回 502 错误,一般都是处理超时或者处理慢。
    而且你这个数据量再怎么大数据,调用接口也不可能一次性调用 2 万条吧。
    微信接口有个批量获取用户基本信息,一次 100 条,你也就是请求 200 次就行。
    不管咋样,你只能慢慢存起来慢慢取呗。
    yuan93
    yuan93
    Oct 24, 2018
    11
    所以为啥不入库?入库再 SQL 统计不是更快吗?

    你这情况是在 http 默认超时时间内,接口无法在后台完成 请求微信接口一万多条数据的耗时对吧

    不能理解为什么要实时去调微信的接口,提前把微信数据都拉到本地再过滤就好了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1095 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 23:19 · PVG 07:19 · LAX 15:19 · JFK 18:19
    ♥ Do have faith in what you're doing.