为什么 gcloud 命令启动缓慢?

2023-11-23

只是打字gcloud如需帮助请花 5 秒钟。

$ gcloud
...
gcloud  0.30s user 0.13s system 7% cpu 5.508 total

$ gcloud version
Google Cloud SDK 128.0.0
alpha 2016.01.12
bq 2.0.24
bq-nix 2.0.24
core 2016.09.23
core-nix 2016.09.20
gcloud 
gsutil 4.21
gsutil-nix 4.21
kubectl 
kubectl-darwin-x86_64 1.3.7

$ uname -a
Darwin hiroshi-MacBook.local 16.0.0 Darwin Kernel Version 16.0.0: Mon Aug 29 17:56:20 PDT 2016; root:xnu-3789.1.32~3/RELEASE_X86_64 x86_64

编辑 2017-03-31:Zachary 说 gcloud 148.0.0 解决了这个问题。所以尝试一下gcloud components update. see https://stackoverflow.com/users/4922212/zachary-newman

tl;dr

事实证明socket.gethostbyaddr(socket.gethostname())很慢.localmacOS 中的主机名。

$ python -i
>>> socket.gethostname()
'hiroshi-MacBook.local'
>>> socket.gethostbyaddr(socket.gethostname()) # it takes about 5 seconds
('localhost', ['1.0.0.127.in-addr.arpa'], ['127.0.0.1'])

因此,为了解决此问题,只需将主机名添加到 /etc/hosts 的 localhost 行即可。

127.0.0.1     localhost hiroshi-Macbook.local                             

之后的返回值就不同了,但是都是瞬间返回。

>>> socket.gethostbyaddr(socket.gethostname())
('localhost', ['1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa'], ['::1'])

我如何到达那里

其中 gcloud 命令是:

$ which gcloud
/Users/hiroshi/google-cloud-sdk/bin/gcloud

编辑 shell 脚本的结束行...

...
+ echo "$CLOUDSDK_PYTHON" $CLOUDSDK_PYTHON_ARGS "${CLOUDSDK_ROOT_DIR}/lib/gcloud.py" "$@"
"$CLOUDSDK_PYTHON" $CLOUDSDK_PYTHON_ARGS "${CLOUDSDK_ROOT_DIR}/lib/gcloud.py" "$@"

回显 gcloud.py 的位置:

$ gcloud
python2.7 -S /Users/hiroshi/google-cloud-sdk/lib/gcloud.py

好的。谁花5秒时间?

$ python2.7 -S -m cProfile -s time /Users/hiroshi/google-cloud-sdk/lib/gcloud.py
     173315 function calls (168167 primitive calls) in 5.451 seconds

Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    5.062    5.062    5.062    5.062 {_socket.gethostbyaddr}
...

_socket.gethostbyaddr is.

函数调用和回溯的参数是什么样的? 我在 main() 之前添加了一些行gcloud.py

import traceback
def mygethostbyaddr(addr):
  print addr
  traceback.print_stack()
  return addr
import socket
socket.gethostbyaddr = mygethostbyaddr

再次执行 gcloud。 我知道这是我机器的 .local 名称。

$ gcloud
hiroshi-MacBook.local
  File "/Users/hiroshi/google-cloud-sdk/lib/gcloud.py", line 74, in <module>
    main()
  File "/Users/hiroshi/google-cloud-sdk/lib/gcloud.py", line 70, in main
    sys.exit(googlecloudsdk.gcloud_main.main())
  File "/Users/hiroshi/google-cloud-sdk/lib/googlecloudsdk/gcloud_main.py", line 121, in main
    metrics.Started(START_TIME)
  File "/Users/hiroshi/google-cloud-sdk/lib/googlecloudsdk/core/metrics.py", line 411, in Wrapper
    return func(*args, **kwds)
  File "/Users/hiroshi/google-cloud-sdk/lib/googlecloudsdk/core/metrics.py", line 554, in Started
    collector = _MetricsCollector.GetCollector()
  File "/Users/hiroshi/google-cloud-sdk/lib/googlecloudsdk/core/metrics.py", line 139, in GetCollector
    _MetricsCollector._instance = _MetricsCollector()
  File "/Users/hiroshi/google-cloud-sdk/lib/googlecloudsdk/core/metrics.py", line 197, in __init__
    hostname = socket.getfqdn()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 141, in getfqdn
    hostname, aliases, ipaddrs = gethostbyaddr(name)
  File "/Users/hiroshi/google-cloud-sdk/lib/gcloud.py", line 32, in mygethostbyaddr
    traceback.print_stack()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 gcloud 命令启动缓慢? 的相关文章

随机推荐

  • 如何使用 Dapper-dot-net 从单个 SP 映射多个记录

    我想在执行单个存储过程将返回 50 个多个单独的选择的情况下使用 Dapper 每个结果集都不会很宽 最多可能有 20 或 30 列 下面的代码来自 Dapper 测试 我想知道这个示例是否是一个很好的原型 谢谢你 斯蒂芬 public v
  • PHP Curl 下载前检查文件是否存在

    我正在编写一个 PHP 程序 从后端下载 pdf 并保存到本地驱动器 现在如何在下载前检查文件是否存在 目前我正在使用curl 参见下面的代码 来检查和下载 但它仍然下载大小为1KB的文件 url http wedsite test pdf
  • 当我们声明静态变量时,编译器实际上做了什么?

    我想知道幕后到底发生了什么 编译器如何处理静态变量 与自动变量不同 静态变量的值即使在块结束后仍然存在 但是编译器实际上如何处理这个问题 与堆栈上的局部变量不同 静态变量保存在特殊的数据段中 静态变量转到哪个段取决于它们是否初始化为 0 0
  • 跨平台和语言(反)序列化

    我正在寻找一种以最方便的方式序列化一堆 C 结构的方法 以便序列化可以跨 C 和 Java 至少 以及跨 32 位 64 位 大 小端平台移植 要序列化的结构仅包含数据 即它们是没有状态或行为的纯数据对象 我们的想法是 我们将结构序列化为一
  • 用于匹配化学式的严格正则表达式

    在使用 Perl 处理大型文本化学数据库的过程中 我遇到了使用正则表达式来匹配化学公式的问题 我见过these two之前的主题 但建议的答案对于我的要求来说太宽松了 具体来说 我的 诚然有限的 研究使我发现这个帖子它给出了当前接受的化学符
  • 使用自定义分配器调用对象构造函数/析构函数

    我一直在研究自定义分配器 并且经常看到它们使用某种函数来分配内存 为了测试目的并进一步教育我自己 我尝试制作一个 简单 的例子 然而 我知道如何做一件基本的事情 主要区别之一是malloc vs new是用 new 调用构造函数 如果我想编
  • Solr:如何对两个不同的字段进行分组?

    我的架构是这样的 product id category id 类别包含产品 在 solr 3 6 中 我根据category id 对结果进行分组 效果很好 我刚刚添加了一个新字段 group id 一组包含尺寸或颜色不同的产品 示例 蓝
  • 如何在XAMPP中恢复mysql数据库?

    我有整个备份xampp mysql文件夹 如何使用它在全新安装的 XAMPP 上恢复旧数据库 简单的复制旧的xampp mysql文件夹到新的 xampp 会导致 mysql 错误 例如 InnoDB InnoDB数据中的表veno sls
  • 使用jquery更改iframe属性

    我有这样的事情 我想使用 jquery 更改宽度和高度 我尝试 frame setAttribute width 50 iframe setAttribute width 31 他们都不工作 正如 Sarfraz 已经指出的那样 为 jqu
  • AngularJS 模块依赖项

    我已经这样定义了我的主模块 angular module domiciliations domiciliations service loggerService person directives config routeProvider
  • 将 uuid.h 包含到 Android NDK 项目中

    我正在使用 NDK 将 C 程序移植到 Android 上 该程序使用uuid h or uuid uuid h库取决于可用的库 当我编译程序时 给出错误消息uuid h No such file or directory 我是 NDK 的
  • HTML5 数据库 API:同步请求

    我目前在 html5 iphone web 应用程序上使用客户端数据库 在我的代码中 我需要检查本地数据库中是否存在一行 function isStarted oDB var ret null oDB query sql params fu
  • 哪些性能计数器可用于识别 ASP.NET 瓶颈?

    鉴于此处的图表 我应该注意什么来识别瓶颈 正如您所看到的 请求在负载下平均花费近 14 秒 其中大部分时间归因于 New Relic 分析数据中的 CLR 在特定页面的性能细分中 它将大部分时间归因于 WebTransaction aspx
  • SQL Azure:与 SQL Azure 的连接引发异常

    当我从代码连接到 SQL Azure 时 出现以下错误 我能够从 SQL Server Management Studio 成功连接到 SQL Azure System Data SqlClient SqlException 建立与 SQL
  • 通过 PHP 解析 JavaScript 文件

    我有一个 JavaScript 文件 我想在其中包含一些 php 代码 问题是我在 PHP 上有一些定义 我也想在 JS 上使用它们 有没有办法在 HTML 中包含 js 文件 允许服务器首先使用 php 解释它 在下载到客户端之前 谢谢
  • Numpy 中的结构化数组没有二元运算符吗?

    好的 在学习完 numpy 结构化数组的教程后 我可以创建一些简单的示例 from numpy import array ones names scalar 1d array 2d array formats float64 3 float
  • 我可以将 TLS 与 Send-MailMessage cmdlet 结合使用吗?

    我正在尝试使用 PowerShell 发送电子邮件 但需要使用 TLS 我可以使用 Send MailMessage cmdlet 执行此操作吗 这是我的代码 file c Mail content txt if test path fil
  • 仅从数据库中类似日志的表中读取新行

    我们遇到这样的情况 多台服务器将行块插入关系数据库的表中 而一台服务器偶尔从表中读取新数据 该表在概念上是某种日志文件 数据仅插入但从未修改 读取服务器显示日志的尾部 有没有办法让读取服务器只读取新数据 我们可以按照自己的意愿自由地构建表格
  • Parallel.For 和 Parallel.For 之间有区别吗?

    之间有区别吗TParallel For and TParallel For 两者都可以在 Delphi 10 Seattle 中编译 那么我应该坚持哪一个呢 方法定义为TParallel For需要 符号来转义 areserved word
  • 为什么 gcloud 命令启动缓慢?

    只是打字gcloud如需帮助请花 5 秒钟 gcloud gcloud 0 30s user 0 13s system 7 cpu 5 508 total gcloud version Google Cloud SDK 128 0 0 al