之前发过一篇关于使用魔法的文章,由于相关法规的原因被系统和谐了,这里就不再发表了,有需要了解的可以私信。之前以为是我个人设置之类的问题,今天有空,再回头去翻官方的Issues,发现有两个问题的原因已经被人找出来了。于是困扰了我多时的问题也被解决了。本文主要是自己记录存档,以备自查。同时也可以让有相同困扰的伙伴一些参考。
问题一:间歇性CPU占用过大的情况
这个问题虽然在Issues里反馈得不多,但足以让人抓狂,每分钟出现一次CPU占用高峰,虽然增加的耗电量感觉不出来,但看着却很难受,如果软路由的硬件(CPU)配置差一点,占用率直接可以干满。
看着这样的CPU心电图,强迫症犯没犯?
我就开一软件,你给我看心电图,这叔能忍,婶不能忍。今天又来看Issues,今年终于有位名为ihategfw的网友把病因抛出来了,虽然官方没去解决,但我们可以自己动手,丰衣足食,啊不对,是自己动手,抹平心电图。怎么听起来有点瘆得慌😰
上Issues链接:频繁占用cpu,降级v0.45.157-beta后正常 · Issue #3770 · vernesong/OpenClash (github.com)
上主菜!进入openclash的程序目录,默认地址一般为:“/usr/share/openclash”,然后编辑“openclash_watchdog.sh”脚本文件。
cd /usr/share/openclash
vi openclash_watchdog.sh
在编辑器里找到“sleep 60”,第一个“sleep 60”在“check_dnsmasq”下一行,sleep后面是一个while循环。为什么会每分钟一个波峰,就是sleep了60秒,我们让它再多睡一会儿,比如1小时,一般魔法稳定的,时间再长一些(如1天)也没问题。
sleep 3600
Vim中输入“/sleep 60”回车可以快速定位到“sleep 60”,按Insert键可以修改内容,修改好后按ESC退出修改。然后再定位和修改,一共有3处“sleep 60”,最后输入“:x”回车保存并退出。Vim的更多操作请自行百度。
接下来是重启OpenClash:
/etc/init.d/openclash restart
问题一至此解决。
问题二:停留在OpenClash的运行状态和设置页面CPU占用高
你看,你好好的一个软件干什么不好,非得那么吃CPU,是不是存心让用户不开森?
不引用了,直接上链接:为什么openwrt停留在openclash的运行状态就占这么高的cpu[Bug] · Issue #2805 · vernesong/OpenClash (github.com)
反正我不需要IPv6转IPv4端口,所以直接把socat禁了,再进OpenClash的运行状态和设置页面果然CPU占用率不再上升了。
其实这两个问题不是每个OpenClash都会出现的,我之前在单位做个DNS服务器用的软路由,就没这个问题,也没有间歇性来个波峰,单位是服务器上开的虚拟机,家里是民用CPU,让我一度以为是民用CPU本身的原因。看来玩到的机器还是太少……
这么一回想,之间单位那台运行OpenWRT虚拟机是旁路由,又没上IPv6,根本不可能用到socat。
感谢耐心阅读!如有谬误或不足之处,望回复留言批评指正,欢迎来交流。