很久没写东西,感觉有些笔拙。现在Deepseek R1这个大语言模型的出现,要慢慢改变自己的写作时的思维过程。写作是动脑的过程,只有工作中动脑容易让思维范式僵化,所以要通过写作业思考。面对变化与新环境,要自己先动脑思考,有自己的创意,设计的过程。
发现问题
春节回来,发现我的树莓派NAS(4B 8G版)老是莫名其妙的重启。通过journalctl --list-boots
查看系统重启的日志,发现2自月1日起,发现自2月1日起重启间隔缩短至2小时以内,最严重的时段,重启间隔不到一个小时。之前也试过一段时间每天重启,那时就在重装新的Debian加OMV系统后,每天自动重启的问题就消失了。
我看着Finalshell上的内存占用与进程信息,发现开机一段时间就会有70%,CPU使用率长期高过50%。于是我重点怀疑以下服务进程:qbittorrent、Alist、minidlna、jellyfin。另外,还想到是2月1日之后,换了新的虚拟主机,代理通道质量提升导致PT连接数激增,Alist与服务器连接一起,通常会流量传输。
尝试解决
自己通过陆续停用以上服务进程来降低内存占用,结果也只是从一个小时重启变成两个小时左右重启。最好是10小时重启,但一恢复其中一个服务,又变成一两个小时重启。也尝试过改变它们的设置,减少缓存和扫描频率来降低内存占用,但也是无用。
网上也提到过硬件的问题,可是重启频率猛增时,硬件本身与硬件环境没有发生任何变化,所以很快排除这个可能。
后来想到Windows系统有些问题也会因为没有设置虚拟内存,导致程序闪退,甚至系统蓝屏,现在对于Linux Debian内存占用高问题,也可能是因为没有SWAP交换文件,似乎Linux的内存也不会完全跑满,于是设置1G虚拟内存。方法如下。
# 创建1GB交换文件 fallocate -l 1G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile # 写入fstab实现持久化 echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
设置1G交换文件,一开始不使用,但一天之内,就会占用80%-100%,内存使用也用60-70%,然后发现还是在一天重启重启。之后又调整了这些服务的配置,但还是会重启。
最终解决
于是一气之下,设置2G交换文件,然后就发现超过一天没有重启。内存与虚拟内存占用可以超过60%-80%,CPU在50%也抗住了。于是树莓派老是自己重启的问题算解决了。
考虑到树莓派CPU比较弱,另外,新年前买了个N100 CPU的小主机做软路由。我决定正式实施存算分离的思路,相同功能的服务只保留一份。于是,我停了树莓派的代理、Jellyfin、minidlna、Kafka服务,保留文件下载、文件共享、挂机签到与数据库服务。最主要是停了minidlna、Jellyfin服务,减少了树莓派大量运算负担,前者会不停扫描,建立索引;后者也是会扫描,并会刮削媒体文件。这两者建立以来很少使用。停掉也是因为要放弃All-in-one这种使用思路。
两者硬件性能对比:
设备 | 计算能力 | 内存带宽 | 解码支持 | TDP |
---|---|---|---|---|
树莓派4B | 4xCortex-A72 | 24GB/s | H.264 1080p | 7W |
N100小主机 | 4xGracemont | 38.4GB/s | AV1 8K | 6W |
树莓派CPU解码能力太弱,计算能力不足,让树莓派处理IO密集型任务,不要求瞬时性能的任务。而N100凭借12代酷睿混合架构,在15W TDP下轻松吞吐多项服务。这次问题的解决充分证明:当软件优化触及物理极限时,硬件升级才是破局之道。于是就启用软路由的Emby媒体服务与Docker,并让软路由承担所有与网络相关的服务。
评论