Graphene-python大数据集处理性能问题求助
Graphene-Python + Graphene-Django 序列化阶段响应延迟严重排查求助
我最近在项目里用 graphene-python 搭配 graphene-django(还加了 graphene-django-optimizer 做数据库查询优化),碰到了个非常棘手的问题:
- 数据库查询部分表现完全正常,所有SQL加起来也就数毫秒就能跑完;
- 但graphene把查询结果转换成GraphQL响应却要花10秒以上;
- 而且响应数据量和延迟呈线性正相关——数据量翻三倍,响应时间也跟着翻三倍。
返回的数据是最多7层的嵌套对象,数据库查询已经通过optimizer优化过了,SQL耗时完全没问题,所以我百分百肯定延迟出在graphene的结果解析/序列化环节。
我试过用Django的cProfiler来抓性能,但不知道为什么没法定位到graphene的执行过程;后来用 graphene-django-debugger 中间件拿到了SQL查询的耗时数据,大家可以看看:
"_debug": { "sql": [ { "duration": 0.0016078948974609375, "isSlow": false, "rawSql": "SELECT SYSDATETIME()" }, { "duration": 0.0014908313751220703, "isSlow": false, "rawSql": "SELECT [redacted]" }, { "duration": 0.0014371871948242188, "isSlow": false, "rawSql": "SELECT [redacted]" }, { "duration": 0.001291036605834961, "isSlow": false, "rawSql": "SELECT [redacted]" }, { "duration": 0.0013201236724853516, "isSlow": false, "rawSql": "SELECT [redacted]" }, { "duration": 0.0015559196472167969, "isSlow": false, "rawSql": "SELECT [redacted]" }, { "duration": 0.0016672611236572266, "isSlow": false, "rawSql": "SELECT [redacted]" }, { "duration": 0.0014820098876953125, "isSlow": false, "rawSql": "SELECT [redacted]" }, { "duration": 0.0014810562133789062, "isSlow": false, "rawSql": "SELECT [redacted]" }, { "duration": 0.001667022705078125, "isSlow": false, "rawSql": "SELECT [redacted]" }, { "duration": 0.0014202594757080078, "isSlow": false, "rawSql": "SELECT [redacted]" }, { "duration": 0.0027959346771240234, "isSlow": false, "rawSql": "SELECT [redacted]" }, { "duration": 0.002704143524169922, "isSlow": false, "rawSql": "SELECT [redacted]" }, { "duration": 0.0030939579010009766, "isSlow": false, "rawSql": "SELECT [redacted]" } ] }
同一请求的服务器响应时间有截图佐证(截图位置:[此处])。
有没有大佬遇到过类似的情况?或者能教教我怎么才能对graphene的序列化过程做精准的性能分析?实在是卡在这里动不了了,万分感谢!
内容的提问来源于stack exchange,提问作者techknowfile
相关产品推荐
相关产品推荐

