第一次处理大数据问题

2018-10-15 17:56:33 +08:00
 missqxy

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

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

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

不能理解为什么要实时去调微信的接口,提前把微信数据都拉到本地再过滤就好了

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

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

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

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

© 2021 V2EX