极限上网攻略:$1_年 128MB + 仅IPv6 加拿大LXC VPS

极限上网攻略:$1_年 128MB + 仅IPv6 加拿大LXC VPS

 次点击
13 分钟阅读

VPS指引👇(含aff)

NatHost $1/年 仅IPv6 服务器 1核心LXC-128M

(三网都还不错,单线程测试下电信4G测试80Mbps,电信500M宽带90Mbps,移动1000M宽带120Mbps)

主要方案使用的是WARP+获取的IPv4+IPv6出口。

使用Misaka的安装脚本

wget -N https://gitlab.com/Misaka-blog/warp-script/-/raw/main/warp.sh && bash warp.sh

安装完毕后发现时不时会掉线,且无法连接。

warp-go内存占用

经排查发现是warp-go内存占用过多的问题,尤其是遇到并发场景时大约能占到40~50MB左右的内存,并且自动释放内存的周期很长,往往导致OOM问题。

解决方案

由于我们无法主动限制warp客户端的内存释放策略,且该主机商禁止了添加SWAP的策略,我们尝试通过自动监测warp-go的内存占用情况,并且在占用过多时重启服务。

sudo vi /etc/systemd/system/memory_monitor.service

填写服务配置

[Unit]
Description=Memory Monitor Service
After=network.target

[Service]
ExecStart=/bin/bash /restart-warp.sh

[Install]
WantedBy=default.target

保存并关闭文件

运行以下命令来重新加载systemd配置,启用并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable memory_monitor.service

然后编写监测的脚本,每五秒检查一次内存占用情况,如果超过80%,则执行systemctl restart warp-go命令

#!/bin/bash

while true; do
    memory_usage=$(free | awk 'NR==2{printf "%.2f\n", $3*100/$2 }')
    if (( $(echo "$memory_usage > 80" | bc -l) )); then
        systemctl restart warp-go
    fi
    sleep 5
done

重启服务器,至此OOM问题已解决。

Nginx无法正常启动

虽然不会再出现爆内存问题了,但是这里有一个逻辑上的问题还没有解决:Trojan后置的Nginx设置了fallback反向代理,并且我设置的是自己的一个仅支持IPv4的网站,这样在开机后Nginx是无法在没有IPv4出口的情况下成功应用反向代理,因此Trojan也无法正常启动。

解决方案

一个替代的解决方案是在服务器启动一段时间后,warp-go客户端成功获取了IPv4出口后重启Nginx,再接着重启Trojan即可。

为了简便直接补充在之前的脚本中

#!/bin/bash

sleep 20
service nginx restart
sleep 10
systemctl restart trojan-go.service

while true; do
    memory_usage=$(free | awk 'NR==2{printf "%.2f\n", $3*100/$2 }')
    if (( $(echo "$memory_usage > 80" | bc -l) )); then
        systemctl restart warp-go
    fi
    sleep 5
done

结尾

解决这两个问题后就可以正常使用了,不过由于其仅支持IPv6,且时延较高,不适合用来进行游戏。但是1刀每年要什么自行车🥹

© 本文著作权归作者所有,未经许可不得转载使用。