登录
首页 >  Golang >  Go问答

查询和 c.JSON 响应速度慢

来源:stackoverflow

时间:2024-03-19 14:18:29 165浏览 收藏

在使用 GORM 查询数据库后,将结果转换为 JSON 的过程异常缓慢,响应时间长达 10 秒。经过调查,发现并非查询本身耗时,而是服务器提供商存在巨大的延迟,导致数据接收时间长达 10 秒。

问题内容

我使用 gorm 查询数据库,然后使用 gin 的 c.json 将结构编组为 json。

这是一个大型查询,结果不多( < 100k ),而且我对整理数据所需的时间(6-10 秒)有疑问。

我不知道从哪里开始解决这个问题。

[2019-07-02 14:41:04]  [946.63ms]   select  big slow query
    [62861 rows affected or returned ]
    [gin] 2019/07/02 - 14:41:11 | 200 |   7.92347114s |  ip | get      /api/date/2019-05-30


    [2019-07-02 14:40:44]  [660.47ms]   select big slow query
    [7583 rows affected or returned ]
    [gin] 2019/07/02 - 14:40:54 | 200 | 10.841096216s |  ip | get      /api/dailies

    [2019-07-02 14:43:49]  [154.13ms]   select simple query
    [11 rows affected or returned ]
    [gin] 2019/07/02 - 14:43:49 | 200 |  158.256792ms |  ip | get      /api/dailycount

正如您所看到的,查询 1 和 2 在 600-900 毫秒内解析,虽然速度很慢,但可以单独优化。 问题是服务器的响应需要 7.9 和 10.8 秒..! 对于较小的查询,没有太大区别,但我不明白为什么会发生这种情况。

其中一条路线的 go 代码非常简单,并且对于所有路线都相似:

var alertList []AlertJson
    dbInstance.Debug().Raw("SELECT big query").Scan(&alertList)
    c.JSON(http.StatusOK, gin.H{"alerts": alertList})

第二个查询需要 10.2 秒来编组 7583 行,这对我来说似乎相当疯狂。


解决方案


我的服务器提供商存在巨大的延迟,事实上,正如 Peter 提到的,这 10 秒确实是我接收数据的延迟。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>