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刀每年要什么自行车