通过谷歌云 NAT 访问互联网时出现明显延迟

Bor*_*ris 1 google-cloud-platform google-cloud-networking

在我们的设置中,我们有没有外部 IP 的虚拟机通过 Google Cloud NAT 访问外部世界。

我们正在观察奇怪的行为:

  • 每 10 - 15 个请求显着延迟(15 - 135 秒)
  ~$ for i in {1..50}; do echo $i;  time curl -s 'https://stackoverflow.com/' > 
  /dev/null; done
  .
  .
  .
  15

  real  2m10.830s
  user  0m0.049s
  sys   0m0.029s
Run Code Online (Sandbox Code Playgroud)
  • 我可以在 stackdriver 日志中看到相关连接被删除:
    {
    .
    .
    .
      jsonPayload: {
        allocation_status: "DROPPED"
      }
      timestamp: "2019-09-20T11:41:05.904608023Z"  
    }
Run Code Online (Sandbox Code Playgroud)

任何解决问题的想法/建议将不胜感激。:)

谢谢,

鲍里斯

The*_*gue 9

您的 VM 可能会耗尽可用的 NAT 端口。例如,如果为每个 VM 分配 4096 个端口,那么每 15 个 VM 就需要一个 NAT IP 地址。在实时操作期间,如果 VM + NAT 由于开放连接(TCP 是最长存在的)而耗尽可用端口,您可能会开始看到流量下降。您可能需要考虑减少TCP 超时,或为每个 VM 分配更多端口。

您可以在云控制台中使用以下命令查看 NAT 映射的当前状态(例如,每个 IP/VM 的端口数):

gcloud 计算路由器 get-nat-mapping-info [路由器名称]