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

存储写入速度很慢的设备上缓存持久化的bug #1836

Open
qwerttvv opened this issue Oct 7, 2024 · 10 comments
Open

存储写入速度很慢的设备上缓存持久化的bug #1836

qwerttvv opened this issue Oct 7, 2024 · 10 comments

Comments

@qwerttvv
Copy link

qwerttvv commented Oct 7, 2024

软件版本是目前最新的
84f217d

我最近发现我一个比较旧的openwrt路由设备上,缓存设置为20000上限,开启持久化缓存,重启设备后缓存文件只有大概200k左右,实际上缓存要比这个大很多,因为写入存储的速度很慢,还没写完,设备就重启了

判断及复现过程

1、设置20000的缓存上限,开启持久化,多浏览网站多解析(具体缓存条数没有查看,但不会少)
2、手动重启软件
3、可以观察到持久化缓存文件正在写入,文件缓慢增加到接近3m大小(每次刷新都会看到文件增加几十k大小),此时存储的持久化缓存文件正常
4、软件重启后多用一会儿,保证软件正确完整的载入了持久化的缓存文件
5、重启设备,重启后观察到持久化缓存文件只有大约200k,而不是之前完整的3m

猜测是执行设备重启的时候,缓存还没有完整的从内存写到存储里成功进行持久化,此时文件刚刚写了一部分,并不完整,然而设备就已经断电重启了(大概是判断smartdns进程卡死了然后强制就重启了?)

不知道在软件层面有没有什么好一些的解决方案

@xueba0458
Copy link

@qwerttvv 文档里不是写了吗?

设置cache定时保存

为避免cache因为系统或进程复位丢失,可以设置smartdns周期保存cache文件。
cache-checkpoint-time 86400

@qwerttvv
Copy link
Author

@qwerttvv 文档里不是写了吗?

设置cache定时保存

为避免cache因为系统或进程复位丢失,可以设置smartdns周期保存cache文件。 cache-checkpoint-time 86400

嗯,我有定期自动重启设备的习惯,每天夜里来那么一下子,缓存依旧会被覆盖成写入不完整的坏的文件,但平时系统和程序很稳,所以这个选项对我来说没什么用,只会磨损闪存,不会最终保存正确的缓存文件

@xueba0458
Copy link

xueba0458 commented Oct 21, 2024

@qwerttvv 文档里不是写了吗?

设置cache定时保存

为避免cache因为系统或进程复位丢失,可以设置smartdns周期保存cache文件。 cache-checkpoint-time 86400

嗯,我有定期自动重启设备的习惯,每天夜里来那么一下子,缓存依旧会被覆盖成写入不完整的坏的文件,但平时系统和程序很稳,所以这个选项对我来说没什么用,只会磨损闪存,不会最终保存正确的缓存文件

还有这种情况???文档里写了以下这句话,进程没有正常退出的情况下,不会写入缓存文件吧!

缓存文件只有在进程正常退出的时候“才会保存”,供下次使用。

我不知道保存cache文件是怎么实现的,你可以设置自动保存试试,有可能是设置了自动保存后,就不会在进程退出的时候保存了。

@PikuZheng
Copy link
Contributor

比较好奇写入3M文件需要多久时间,用DD测一下?我家的路由器NAND flash存3M文件也是不到一秒

@qwerttvv
Copy link
Author

好消息,我弄了个新路由器,这个问题马上我就不关心了

坏消息,新路由器因为smartdns老死机……

@xueba0458
Copy link

好消息,我弄了个新路由器,这个问题马上我就不关心了

坏消息,新路由器因为smartdns老死机……

还有这种事????smartdns那么吃性能???不应该吧???

@PikuZheng
Copy link
Contributor

有可能是编译依赖问题

还有这种事????smartdns那么吃性能???不应该吧???

@qwerttvv
Copy link
Author

qwerttvv commented Nov 1, 2024

不是,那个路由器真就写入那么慢,所以我才想着换一个的啊

@pymumu
Copy link
Owner

pymumu commented Nov 19, 2024

限制cache大小吧。可能是内存不足了。

@qwerttvv
Copy link
Author

限制cache大小吧。可能是内存不足了。

内存肯定是够用的,512平时日常剩余400,看到winscp上去,写入磁盘速度只有每秒170-220k

不过这个设备就要被我淘汰了,大佬你看看我发现的另一个影响使用的bug,百分百复现,就是luci有问题#1849

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

4 participants