9.8 KiB
9.8 KiB
FRP资源消耗分布分析
分析时间: 2026-01-12
目标: 明确FRP配置优化对客户端(素材库服务器)和服务端(穿透服务器)的资源消耗影响
📊 资源消耗分布总览
| 配置项 | 客户端(素材库服务器) | 服务端(穿透服务器) | 说明 |
|---|---|---|---|
| poolCount | 内存+20M, CPU+5%, 文件描述符+600 | 内存+20M, CPU+5%, 文件描述符+600 | 双向连接,两端都需要资源 |
| heartbeatInterval | 网络流量+0.5KB/s, CPU+1% | 网络流量+0.5KB/s, CPU+1% | 心跳包双向,两端都处理 |
| heartbeatTimeout | 无额外消耗 | 无额外消耗 | 只是超时时间,不增加资源 |
| tcpKeepAlive | 网络流量+0.3KB/s | 网络流量+0.3KB/s | TCP保活双向,两端都处理 |
| tcpKeepAliveInterval | 网络流量+0.2KB/s | 网络流量+0.2KB/s | 保活间隔,两端都处理 |
| LimitNOFILE | 仅提高限制值 | 需要相应提高限制值 | 两端都需要文件描述符 |
| MemoryMax | 仅提高限制值 | 需要相应内存 | 两端都需要内存维护连接 |
| CPUQuota | 仅提高限制值 | 需要相应CPU | 两端都需要CPU处理连接 |
🔍 详细分析
1. poolCount (连接池大小)
客户端(素材库服务器 - 192.168.58.20)
资源消耗:
- 内存: +15-25MB
- 每个连接池连接需要维护状态、缓冲区
- 30个连接 × 0.5-1MB = 15-30MB
- CPU: +3-5%
- 处理连接状态、数据转发
- 心跳包处理
- 文件描述符: +600个
- 30个连接池连接 × 每个连接需要多个文件描述符
- 网络连接: +20个TCP连接
- 与穿透服务器保持的连接数
服务端(穿透服务器 - 180.97.221.140:7000)
资源消耗:
- 内存: +15-25MB
- 相同:每个连接需要维护状态、缓冲区
- 30个连接 × 0.5-1MB = 15-30MB
- CPU: +3-5%
- 相同:处理连接状态、数据转发
- 心跳包处理、数据包转发
- 文件描述符: +600个
- 相同:每个连接需要文件描述符
- 网络连接: +20个TCP连接
- 相同:与客户端保持的连接数
关键点:
- ✅ 两端资源消耗相同
- ✅ 连接是双向的,两端都需要维护
- ⚠️ 穿透服务器也需要相应增加资源
2. heartbeatInterval (心跳间隔)
客户端(素材库服务器)
资源消耗:
- 网络流量: +0.5KB/s(发送心跳包)
- CPU: +1%(生成和发送心跳包)
服务端(穿透服务器)
资源消耗:
- 网络流量: +0.5KB/s(接收心跳包)
- CPU: +1%(接收和处理心跳包)
关键点:
- ✅ 两端资源消耗相同
- ✅ 心跳包是客户端发送,服务端接收并响应
- ⚠️ 穿透服务器需要处理更多心跳包
3. heartbeatTimeout (心跳超时)
客户端和服务端
资源消耗:
- ➡️ 无额外资源消耗
- 只是超时判定时间,不增加实际资源使用
4. tcpKeepAlive (TCP保活)
客户端(素材库服务器)
资源消耗:
- 网络流量: +0.3KB/s(发送TCP保活包)
- CPU: 0(由内核处理,不占用应用CPU)
- 内存: 0(由内核处理)
服务端(穿透服务器)
资源消耗:
- 网络流量: +0.3KB/s(接收TCP保活包)
- CPU: 0(由内核处理,不占用应用CPU)
- 内存: 0(由内核处理)
关键点:
- ✅ 两端资源消耗相同
- ✅ TCP保活由内核处理,应用层无额外CPU/内存消耗
- ✅ 只是网络流量增加
5. tcpKeepAliveInterval (TCP保活间隔)
客户端和服务端
资源消耗:
- 网络流量: +0.2KB/s(两端相同)
- 其他资源无影响
6. LimitNOFILE (文件描述符限制)
客户端(素材库服务器)
影响:
- 只是提高限制值,不增加实际消耗
- 但需要足够的文件描述符支持更多连接
服务端(穿透服务器)
影响:
- ⚠️ 也需要提高文件描述符限制
- 需要支持更多客户端连接
- 如果穿透服务器有多个客户端,需要更大的限制值
关键点:
- ⚠️ 穿透服务器也需要相应提高LimitNOFILE
- 如果穿透服务器服务多个客户端,需要更大的限制值
7. MemoryMax (内存限制)
客户端(素材库服务器)
影响:
- 只是提高限制值
- 实际使用取决于负载(预计+20-50MB)
服务端(穿透服务器)
影响:
- ⚠️ 也需要足够的内存
- 每个连接需要内存维护状态
- 如果穿透服务器服务多个客户端,需要更多内存
关键点:
- ⚠️ 穿透服务器也需要足够的内存
- 建议穿透服务器内存 ≥ 客户端连接数 × 1MB
8. CPUQuota (CPU限制)
客户端(素材库服务器)
影响:
- 移除CPU限制,允许使用更多CPU
- 预计CPU使用从14.4% → 20-30%
服务端(穿透服务器)
影响:
- ⚠️ 也需要足够的CPU
- 处理更多连接、数据转发需要更多CPU
- 如果穿透服务器服务多个客户端,CPU需求更高
关键点:
- ⚠️ 穿透服务器CPU使用也会增加
- 建议穿透服务器CPU使用率 < 70%
📊 综合资源消耗对比
客户端(素材库服务器 - 192.168.58.20)
| 资源类型 | 增加量 | 当前状态 | 是否可接受 |
|---|---|---|---|
| 内存 | +20-50MB | 38MB → 58-88MB | ✅ 是(限制1G) |
| CPU | +10-20% | 14.4% → 24-34% | ✅ 是(服务器充足) |
| 网络流量 | +1-2KB/s | 可忽略 | ✅ 是 |
| 文件描述符 | +600个 | 4096 → 8192限制 | ✅ 是 |
服务端(穿透服务器 - 180.97.221.140:7000)
| 资源类型 | 增加量 | 说明 | 是否可接受 |
|---|---|---|---|
| 内存 | +20-50MB | 每个客户端连接需要内存 | ⚠️ 需要确认 |
| CPU | +10-20% | 处理更多连接和数据转发 | ⚠️ 需要确认 |
| 网络流量 | +1-2KB/s | 心跳包和保活包 | ✅ 是(可忽略) |
| 文件描述符 | +600个/客户端 | 如果服务多个客户端,需要更大限制 | ⚠️ 需要确认 |
⚠️ 重要发现
1. 双向资源消耗
所有连接相关的优化都会同时影响两端:
- ✅ 客户端(frpc)需要更多资源
- ⚠️ 服务端(frps)也需要更多资源
2. 穿透服务器需要考虑的因素
如果穿透服务器(180.97.221.140:7000)服务多个客户端:
| 场景 | 资源需求 |
|---|---|
| 仅服务素材库 | 资源增加 = 客户端增加量 |
| 服务多个客户端 | 资源增加 = 所有客户端增加量之和 |
示例:
- 如果穿透服务器服务3个客户端,每个客户端poolCount从10→30
- 穿透服务器需要支持: 3 × 20 = 60个额外连接
- 内存增加: 3 × 20MB = 60MB
- CPU增加: 3 × 5% = 15%
3. 网络流量是双向的
- 客户端发送心跳包 → 服务端接收
- 服务端响应心跳包 → 客户端接收
- 两端网络流量增加相同
🔍 穿透服务器资源检查建议
需要检查的指标
-
当前资源使用:
# 在穿透服务器上执行 # 检查frps进程资源使用 ps aux | grep frps # 检查当前连接数 netstat -an | grep :7000 | grep ESTABLISHED | wc -l # 检查内存使用 free -h # 检查CPU使用 top -p $(pgrep frps) -
服务多少个客户端:
# 检查连接到frps的客户端数量 netstat -an | grep :7000 | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort -u | wc -l -
文件描述符使用:
# 检查frps进程的文件描述符使用 lsof -p $(pgrep frps) | wc -l
💡 建议
对客户端(素材库服务器)
✅ 可以立即执行所有优化:
- 资源增加在可接受范围内
- 服务器资源充足
对服务端(穿透服务器)
⚠️ 需要先检查:
-
检查当前资源使用:
- 内存使用率
- CPU使用率
- 文件描述符使用
- 当前连接数
-
检查服务多少个客户端:
- 如果只服务素材库:可以安全执行
- 如果服务多个客户端:需要评估总资源需求
-
建议的穿透服务器配置:
- 内存: ≥ 2GB(如果服务多个客户端,建议4GB+)
- CPU: ≥ 2核(如果服务多个客户端,建议4核+)
- 文件描述符限制: ≥ 16384(如果服务多个客户端)
- 网络带宽: ≥ 10Mbps(取决于客户端数量和流量)
📋 穿透服务器优化检查清单
执行优化前
- 检查穿透服务器当前内存使用率
- 检查穿透服务器当前CPU使用率
- 检查穿透服务器当前连接数
- 检查穿透服务器服务多少个客户端
- 检查穿透服务器文件描述符限制
- 评估总资源需求
执行优化后
- 监控穿透服务器内存使用
- 监控穿透服务器CPU使用
- 监控穿透服务器连接数
- 监控穿透服务器错误日志
- 如果资源不足,考虑升级服务器配置
✅ 总结
资源消耗分布
-
客户端(素材库服务器):
- ✅ 资源增加在可接受范围内
- ✅ 可以立即执行优化
-
服务端(穿透服务器):
- ⚠️ 也需要增加相同或更多的资源
- ⚠️ 需要先检查当前资源使用情况
- ⚠️ 如果服务多个客户端,资源需求会成倍增加
关键建议
- 客户端优化: 可以立即执行
- 服务端检查: 执行优化前,先检查穿透服务器的资源使用情况
- 监控: 执行优化后,同时监控客户端和服务端的资源使用
最后更新: 2026-01-12