安装luci-app-minidlna后状态页“cpu使用率“显示虚高,排除过程记录。
状态页CPU显示异常,top命令却正常?
说下背景。手头这台K2P,最近刚折腾完硬改,换了32M的flash,内存加到521M,还引了个USB口出来。固件是自己用官方源码编译的,一直跑得挺稳。硬件底子好了,心思就活络了,想着往里头塞点功能,毕竟不能浪费这增加的flash和内存对吧?
于是我就去路由器的“软件包”界面,搜了minidlna,顺手把luci-app-minidlna也一起装了。装完也没多想,就切到概览页想看看系统状态,结果一眼就发现问题了——
原本空闲状态下,CPU使用率也就5%左右,偶尔跳一跳,属于正常波动。现在倒好,直接飙到30%上下晃悠,跟打了鸡血似的。可问题是,我啥也没干啊,后台也没跑什么大任务,这占用率哪来的?
第一反应是怀疑自己眼睛,于是开了SSH连上去,敲了个top命令想看看真实负载。结果你猜怎么着?top里显示的CPU占用率低得很,跟概览页那个30%完全对不上号。这就很诡异了——同一个系统,两个读数,到底该信谁?
DeepSeek帮忙
遇到这种邪门问题,我习惯先自己琢磨,琢磨不透就去找DeepSeek唠嗑。把现象一描述,它倒是给了个排查方向——让我去翻/www/luci-static/resources/view/status/include/这个路径。
一查,果然有问题。这个目录下多了个80_minidlna.js文件。根据DeepSeek的分析,这个js文件不是用来配置MiniDLNA的,它的真正作用是:
-
在概览页上加一个MiniDLNA状态卡片;
-
周期性地执行命令(或者调用CGI/ubus接口)去获取MiniDLNA的运行状态;
-
然后刷新这个卡片的信息。
说白了,它会随着概览页的刷新周期,额外跑一次状态查询。而LuCI的概览页本身就在干这些事:
-
查CPU占用
-
查内存占用
-
查网络流量
-
查系统负载
这下好了,概览页每次刷新,都要额外多跑一个MiniDLNA的查询。MT7621这U本身性能就那样,多一个查询任务,在采样窗口内就可能导致显示的CPU使用率被拉高。而SSH里跑top的时候,因为没有浏览器触发这些查询,所以看不到虚高的现象。
说实话,我没太留意故障状态下概览页是不是真的多了个“MiniDLNA状态”卡片,可能是有,但我当时光顾着看CPU了。就算有,这卡片对我来说也没啥用,我装MiniDLNA是为了共享媒体文件,不是为了在概览页看它状态。相比之下,让CPU使用率回归正常显然更重要。
解决方法
既然定位到是80_minidlna.js在搞鬼,那就好办了。我直接在源码里把这个文件删了:
feeds/luci/applications/luci-app-minidlna/htdocs/luci-static/resources/view/status/include/80_minidlna.js
删掉之后重新编译luci-app-minidlna插件,再把新编译的ipk上传到路由器安装。重启之后再看概览页——CPU使用率恢复正常了,回到5%左右的水平,世界清净了。
如果你也遇到类似的情况,不用急着重新编译,可以先到路由器的对应路径下看看有没有这个文件,把它改个名字(比如后面加个.bak)测试一下,大概率就能恢复。如果确定是它的问题,再考虑替换或重新编译。
提示: 改名前记得先停用MiniDLNA服务,改完重启下LuCI服务或者直接重启路由器,确保改动生效。
记录一下,希望对遇到同样问题的朋友有帮助。
点击链接加入群聊四群:722808830
点击链接加入群聊三群:751529538(已满)
点击链接加入群聊二群:376877156(已满)
点击链接加入群聊一群:622891808(已满)
饿了么红包
本站附件分享,如果附件失效,可以去找找看