larsonzh / amdwprprsct

Asuswrt-Merlin dual WAN port router policy routing service configuration tool(华硕梅林固件路由器外网双线路接入策略路由服务配置工具)
GNU General Public License v3.0
70 stars 15 forks source link

关于内存会逐日减少,大约15天后因内存耗尽而死机 #9

Open jadecat4u opened 1 year ago

jadecat4u commented 1 year ago

路由器是灵耀Pro AX10000,固件为梅林388.1 Koolshare改版版本。内存是1G,重启后的起始可用内存剩余大概470MB左右。除此脚本外,只安装了Tailscale插件。而且不觉得是此插件问题,因为在另一个GT-AC5300的路由器上也安装了Tailscale插件,目前AC5300路由器已经运行了50余天,内存占用无显著变化,维持占用50%多的情况。

而此灵耀出现每天会增加内存占用两三个百分点的情况,直至耗尽内存路由器无法连接的状态,大约历时15天左右,对应的脚本设置为: 1、静态分流模式 usage_mode=1 2、开启定时更新IPv4网络运营商CIDR网段数据 regularly_update_ispip_data_enable=0 3、定时更新时间参数定义为每7天凌晨5点更新 其余为默认设置。

现在把脚本设置维持上述3个更改不变的前提下,做了额外一个更改: 1、禁用路由表缓存 route_cache=5

再次进行测试,看看会不会出现每天增加内存占用的情况。其实之前还用过一段时间的动态分流模式,内存占用情况没有太关注,所以不敢确定是不是静态分流模式造成的。

我会持续关注并更新。

larsonzh commented 1 year ago

Tailscale插件做啥的?脚本版本号是多少?用梅林官方固件试过吗?

你AC5300上安装脚本后也是这种情况吗?

jadecat4u commented 1 year ago

Tailscale类似Zerotier做内网穿透的。脚本用的最新的3.8.8。官方固件没用过,因为还要用内网穿透等其他插件。

我没有在AC5300上运行过这个脚本,因为那个路由器是另外一个地方其他的网络,没有接入双网,没有使用这个脚本的需求。

另外我感觉但不确定的是每4小时清空缓存的设置是无效的,因为我在路由器log里面没找到任何的执行反馈。

larsonzh commented 1 year ago

4小时清空路由表缓存是在系统定时任务里执行,即每间隔4小时执行一次 ip route flush cache 命令,执行结果不会写系统日志或屏幕输出,可以用 cru l 命令查询该任务。

目前未曾在脚本代码里发现内存泄漏或在内存中有不断添加内存资源占用的情况,本人路由器长期运行脚本过程中未出现该情况,除本次外,还未收到其他用户的类似报告。

代码在编制和不断迭代的过程中非常注意避免此类情况发生,毕竟是一个需要长期无人值守方式运行的程序,必须对代码中所用资源进行严格的生命周期管理,是否有遗留bug,还需进一步检查。

另外,每隔一段时间重启路由器释放系统资源资源,可避免此问题发生,一些路由器在长时间运行后会有类似现象,很难解释,可能与固件或硬件有关。

jadecat4u commented 1 year ago

感谢解释。我先用这几天看看会不会有仍旧持续增加内存占用的现象,如果还是的话。我在下周拿一个GT-AX11000装上梅林原版固件重新试验(因为刚才才看到梅林固件可以用Entware自己装插件……主要是本人对于Linux还是小白……)。

larsonzh commented 1 year ago

静态分流模式系统路由库资源占用大,动态分流模式占用少,但对路由器主机上的应用无法分流,可以试试。

可以用ps命令查一下系统进程状态。

larsonzh commented 1 year ago

v3.9.0在脚本执行结束时会清理系统缓存,可以试试是否有效果。

jadecat4u commented 1 year ago

感谢提醒。我已经升级到了v3.9.0。因为复现内存溢出需要挺长的时间,而且在此期间路由器还出现过访问外网变慢的问题(当时内存并没有耗尽),只能重启恢复网络,所以到目前为止还没有成功复现内存溢出的问题。我把主路由换成GT-AX11000加上了个U盘做虚拟内存。看看这种情况下是否能长期稳定运行。

wq369641177 commented 1 year ago

Tailscale插件梅林版能分享下吗!

jadecat4u commented 1 year ago

Tailscale插件梅林版能分享下吗!

刷了梅林版的固件就可以直接自行安装了。 SSH之后amtm打开梅林菜单->安装Entware->opkg install tailscale就安装好了。

或者刷koolshare的梅林改版固件,软件中心里有tailscale直接在线安装。koolshare改版的固件好处是软件插件等都UI图形化了,比较容易操作。

larsonzh commented 1 year ago

建议将脚本更新到v3.9.1。

jadecat4u commented 1 year ago

建议将脚本更新到v3.9.1。

谢谢提醒,更新了。多说一句哈,我发现asuswrt是基于linux但是很多又和常见的centos等不同(比如不是用systemctl来控制自启动),有什么资料可以学习一下针对asuswrt的linux么?

larsonzh commented 1 year ago

谢谢提醒,更新了。多说一句哈,我发现asuswrt是基于linux但是很多又和常见的centos等不同(比如不是用systemctl来控制自启动),有什么资料可以学习一下针对asuswrt的linux么?

它这个是裁剪和定制的内核,使用的是BusyBox的shell,一些东西是特有的,很多常用的Linux命令都没有,命令使用前最好先试一下。写脚本代码有时会很麻烦,需要想办法实现那些未包含命令的功能,绕很多湾子设计算法,如数组啥的,导致简单的问题复杂化,而且命令的版本、格式也与常用的不同。没找到啥学习资料,好多东西都是看别人代码,来回折腾,一点点摸索出来的。

larsonzh commented 1 year ago

v3.9.3将系统缓存清理加入到系统的定时任务中,除了执行脚本或更新数据文件结束时能清理缓存,无人值守时每天至少能保证自动清理一次,一般应该够用。重度使用导致缓存增长过快时,可适当缩小清理时间间隔。

jadecat4u commented 1 year ago

v3.9.3将系统缓存清理加入到系统的定时任务中,除了执行脚本或更新数据文件结束时能清理缓存,无人值守时每天至少能保证自动清理一次,一般应该够用。重度使用导致缓存增长过快时,可适当缩小清理时间间隔。

好嘞,这就更新。谢谢提醒。

larsonzh commented 1 year ago

升级至v3.9.4

jadecat4u commented 1 year ago

看到已经更新到3.9.7了,大佬真勤奋,点赞。 把目前的情况再介绍一下: 1、目前仍旧使用的3.9.4版本。 2、ax11000连续运行6天。 3、可以在log里看到每4小时的free memory ok的提示,并且内存cache确实是0或很低。但仍旧存在可用内存不断减少的问题。直到今早例行检查路由器情况时,发现昨天晚上3点log里提示wan1有失败重连的情况,导致整个koolshare软件中心和此脚本都重启的记录。然后可用内存便恢复成与路由器整体重启后相差不大的情况了。感觉是脚本新加的每次重新执行后清理内存的功能有关,也可以能与其他插件有关(目前仅运行tailscale、ss、kms三个软件),而内存缓冲并不是造成内存占用不断加大的原因(所以每4小时清理缓存并不能解决内存占用)。

larsonzh commented 1 year ago

v3.9.7应该是目前最好的版本,以至后续都不知该做哪些改进了。

清理缓存功能对释放Linux系统多余的内存占用有一定效果,尤其是释放系统为提高文件读写效率而预留的内存,但对于被系统和应用运行当中强制持续占用的内存则无效。

对脚本而言,启用上述功能可彻底清除本身有关的多余内存占用,效果很明显。

本人路由器主机gt-ax6000,官方梅林388.1固件,联通移动双线路双拨接入,启用一路联通的IPv6,华硕ddns功能开启,同时启用路由器内置的openvpn、pptp、ipsec和wireguard四个VPN服务器,并在USB盘上安装有entware,本地无线日常最多接入18个左右的终端设备,有线连接一台nas,采用当前版本脚本,静态分流模式,三天定时更新一次ISP运营商网段数据,开启脚本的iptv功能,四小时清理一次路由表和系统缓存,内存占用率近一周时间内观察,维持在56%以下。

另据一些人反映,388.1固件在长时间运行后有内存占用增加现象,且无法自动释放,只能通过重启释放,可能与系统有关,也可能与一些应用不能释放多余内存,或与调用的一些功能模块多次使用后吃内存有关,很难一概而论。

jadecat4u commented 1 year ago

好嘞,那我先升级到3.9.7再说哈。

larsonzh commented 1 year ago

好嘞,那我先升级到3.9.7再说哈。

希望能尽快找出些bug,没米下锅了,否则后面要停更一阵子。

wq369641177 commented 1 year ago

k2怎么安装导入科学插件

larsonzh commented 1 year ago

10天57%

jadecat4u commented 1 year ago

今天也是第十天,这几天都是61%,感觉没那个日渐消耗的现象了

larsonzh commented 1 year ago

今天也是第十天,这几天都是61%,感觉没那个日渐消耗的现象了

啥都没动,昨天涨了1个点,前些天一直是56%。今下午移动WAN口IP自动更新,导致脚本重启,内存占用停在昨天的57%。

下载流量大时,占用率会上升一点,之后会降回来。但感觉还是有一点点增加,可能与系统内部模块有关,如双线路负载均衡。

jadecat4u commented 1 year ago

更新到了4.0.4,主路由换成了AX11000 PRO,其他设置都一样,因为有USB还加了虚拟内存,这是第三天了,内存占用没有任何增加的情况。感觉是之前路由器的问题。再次感谢大公无私的作者和优秀的软件。

larsonzh commented 1 year ago

更新到了4.0.4,主路由换成了AX11000 PRO,其他设置都一样,因为有USB还加了虚拟内存,这是第三天了,内存占用没有任何增加的情况。感觉是之前路由器的问题。再次感谢大公无私的作者和优秀的软件。

当前是4.0.5,更好一些吧。

liyang1300 commented 1 month ago

我也有这个问题 路由器是ax86u 但我是3天左右就内存满了 然后路由自动重启 系统为梅改388.6 安装了小飞机上网 其他插件没有 平时开pt下载上传 此问题困扰多时始终无法解决