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

[性能]当一个app配置太多时,发布配置很慢 #114

Closed
saber-wang opened this issue Dec 21, 2022 · 15 comments
Closed

[性能]当一个app配置太多时,发布配置很慢 #114

saber-wang opened this issue Dec 21, 2022 · 15 comments

Comments

@saber-wang
Copy link

一个app有5000条配置时,发布需要10s左右。

问题应该出在这里,操作了大量的数据。

dbcontext.ConfigPublished.UpdateRange(publishedConfigs);
dbcontext.ConfigPublished.AddRange(publishedConfigsCopy);

可选操作:

  1. 允许关闭记录历史版本的功能
  2. 使用新的历史记录表,以实现仅删除和插入操作并使用批量插入
@kklldog
Copy link
Collaborator

kklldog commented Dec 21, 2022

确实如果有5000条的话,每次发布都要插5000进去来记录历史版本信息。话说你们配置也太多了把 ?哈哈

@saber-wang
Copy link
Author

@kklldog 系统参数,之前都是查数据库,现在想放在配置里。这还只是一个服务的配置···

@saber-wang
Copy link
Author

@kklldog 可以处理嘛?🤣

@kklldog
Copy link
Collaborator

kklldog commented Dec 22, 2022

@kklldog 可以处理嘛?🤣

这个一时半会搞不好,整个版本记录的设计都要更改。

@saber-wang
Copy link
Author

@kklldog 可以先出禁用历史记录嘛?不然内部测试过不了···😖

@kklldog
Copy link
Collaborator

kklldog commented Dec 23, 2022

@kklldog 可以先出禁用历史记录嘛?不然内部测试过不了···😖

我目前没空,你自己试着改一下。

@bc4250
Copy link

bc4250 commented Jan 9, 2023

@saber-wang
5000+的配置 ?有点好奇是些什么配置项
我的理解是AgileConfig只是解决运维配置功能就好,例如功能的开启,数据库连接,依赖服务配置,加密key,log记录等,
如果是大量业务配置,是否应该将配置放到业务系统中去? 如果是业务逻辑的配置,应该也会有频繁的修改需求,也要来agileconfig发布一次才生效?

@saber-wang
Copy link
Author

@bc4250 按各种复杂层级的业务配置。
目前来说除了初始化,一次仅会改几条配置,但是AgileConfig的发布行为是每次都会处理当前app的所有配置而不仅仅是修改的配置。
也就是说每次都要添加5000+行数据并更新5000+行数据.

@yangbocheng
Copy link

@saber-wang 5000+的配置 ?有点好奇是些什么配置项我的理解是AgileConfig只是解决运维配置功能就好,例如功能的开启,数据库连接,依赖服务配置,加密key,log记录等, 如果是大量业务配置,是否应该将配置放到业务系统中去? 如果是业务逻辑的配置,应该也会有频繁的修改需求,也要来agileconfig发布一次才生效?

赞同。 我觉得配置中心应该尽量放公有的配置。配置中心放5000确实有点哈人了。我觉得有几种解决的思路
0.拆分配置,配置中心只放重要公有的配置
1.是修改源码,用批量插入,或者freesql noneparameter 可能能够提高性能
2.是修改源码,去除版本控制,这样数据库的数据量就变少了,应该就能提高性能
3.修改服务连接的数据库。有可能能提高性能

@saber-wang
Copy link
Author

@yangbocheng 计划是修改版本控制,仅为修改的配置创建版本。

@bc4250
Copy link

bc4250 commented Jan 10, 2023

  1. 单纯就这个问题而言,后端存储如果能用文档数据库,或直接用file,参考Git的存储, 而不是关系型数据库,应该可以改善速度;
  2. 另外不用修改程式,agileconfig提供继承配置呢, 用层级继承配置应该也可以吧,建议测试一下.

@kklldog
Copy link
Collaborator

kklldog commented Jan 10, 2023

@saber-wang 5000+的配置 ?有点好奇是些什么配置项我的理解是AgileConfig只是解决运维配置功能就好,例如功能的开启,数据库连接,依赖服务配置,加密key,log记录等, 如果是大量业务配置,是否应该将配置放到业务系统中去? 如果是业务逻辑的配置,应该也会有频繁的修改需求,也要来agileconfig发布一次才生效?

是的,不应该把 agileconfig 做为完成业务的组件来使。配置不应该侵入太多到业务中。

@kklldog
Copy link
Collaborator

kklldog commented Jan 10, 2023

  1. 单纯就这个问题而言,后端存储如果能用文档数据库,或直接用file,参考Git的存储, 而不是关系型数据库,应该可以改善速度;
  2. 另外不用修改程式,agileconfig提供继承配置呢, 用层级继承配置应该也可以吧,建议测试一下.

如果基于文件也是个不错的办法。
或许我可以实现一个 mongodb 的驱动,这样是不是读写性能会强很多。

@robyle
Copy link

robyle commented Sep 7, 2023

  1. 单纯就这个问题而言,后端存储如果能用文档数据库,或直接用file,参考Git的存储, 而不是关系型数据库,应该可以改善速度;
  2. 另外不用修改程式,agileconfig提供继承配置呢, 用层级继承配置应该也可以吧,建议测试一下.

如果基于文件也是个不错的办法。 或许我可以实现一个 mongodb 的驱动,这样是不是读写性能会强很多。

let's mongodb up~!

@kklldog
Copy link
Collaborator

kklldog commented May 23, 2024

Mongodb driver is supported.

@kklldog kklldog closed this as completed Jul 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants