Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

将文章内容从文章表拆分出去或查询文章列表时不附带查询文章内容 #1587

Closed
guqing opened this issue Dec 10, 2021 · 0 comments · Fixed by #1617
Closed
Assignees
Labels
kind/feature Categorizes issue or PR as related to a new feature.
Milestone

Comments

@guqing
Copy link
Member

guqing commented Dec 10, 2021

你当前使用的版本

1.4.15

描述一下此特性

动机

经过对 #1583 issue 的分析,当文章数量过多特别是文章都很长时会导致cpu飙升并且freemarker渲染速度过慢,非常占用资源。

描述

例如以2000条文章字数都在8000字的文章为例:

前置条件: 机器配置 2core 4g,且halo分配3g内存

  1. 使用joe2对首页页面的请求需要5秒多,切换 h2 和 mysql 测试都一样

  2. 对于获取不使用分页查询的归档页面时需要20以上,并且请求未结束之前cpu都会飙升到90%多,直到请求结束才会恢复正常

根据以上情况进行反复测试,发现sql语句的执行时间都在可接受范围内。

此时将 2000 条文章的文章内容都清空后再试时,发现首页页面的请求降低到 300ms, 归档页的页面请求降低到 900ms
归档页面请求过程中cpu占用率也从 90%以上 降低到 20%左右。

因此得出结论:查询文章列表数据时会连带查询出文章内容这样的大字段导致Post对象变大, 堆积到内存中,况且归档页没有使用分页, 那么查询归档页时会将2000条文章数据包括其内容查询到内存中, 导致计算量变大,因此cpu飙升,而这些情况文章内容都是无用的字段

综上所述,应该将文章内容从文章表中拆分出去以优化查询并减少无用大字段的存在时对象变量从而导致计算量上升。

附加信息

No response

@guqing guqing pinned this issue Dec 10, 2021
@guqing guqing unpinned this issue Dec 10, 2021
@guqing guqing changed the title 将文章内容从文章表总拆分出去或查询文章列表时不附带查询文章内容到内存 将文章内容从文章表拆分出去或查询文章列表时不附带查询文章内容到内存 Dec 10, 2021
@guqing guqing changed the title 将文章内容从文章表拆分出去或查询文章列表时不附带查询文章内容到内存 将文章内容从文章表拆分出去或查询文章列表时不附带查询文章内容 Dec 10, 2021
@ruibaby ruibaby added the kind/feature Categorizes issue or PR as related to a new feature. label Dec 10, 2021
@ruibaby ruibaby added this to the 1.5.x milestone Dec 17, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/feature Categorizes issue or PR as related to a new feature.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants