我最近将内网穿透方案从nps切换到了frp,主要是因为frp功能更强大、配置更灵活。但实际使用中发现frp的速度非常不理想,远不如之前用nps时的体验,尤其是访问HTTP/HTTPS服务时延迟较高、带宽利用率也不理想。
我已经尝试了网上常见的优化方法,包括:
开启kcp或quic协议
开启/关闭tcp多路复用
关闭加密(encrypt)和压缩(compression)
但是基本上效果是没有的,即使访问一个几百字节的静态资源,有时也要1秒左右才能加载完成,之前使用nps的时候比这快多了。
Screenshot from 2025-07-10 11-59-531476×937 196 KB
两端的配置:
frps.toml
bindPort = 7000
vhostHTTPPort = 980 # Disable built-in HTTP routing
vhostHTTPSPort = 9443
kcpBindPort = 7001
quicBindPort = 7002
[auth]
method = "token"
token = "
[webServer]
addr = "0.0.0.0"
port = 6001
user = "
password = "
[log]
to = "/var/log/frps/access.log"
maxDays = 7
frpc.toml
serverAddr = "
serverPort = 7001
transport.protocol = "kcp"
[auth]
method = "token"
token = "
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 23
transport.useEncryption = false
transport.useCompression = false
[[proxies]]
name = "main-http"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 80
transport.proxyProtocolVersion = "v2"
transport.useEncryption = false
transport.useCompression = true
[[proxies]]
name = "main-https"
type = "tcp"
localIP = "127.0.0.1"
localPort = 443
remotePort = 443
transport.proxyProtocolVersion = "v2"
transport.useEncryption = false
transport.useCompression = true
因为一些特殊原因,我们没让frp处理http得分流,而是直接把80和443转发到本地机器,由本地机器中的nginx来处理。
请问还有哪些优化思路或者排查方向?或者frp本身就存在性能瓶颈吗?
感谢大家的帮助!