为什么gcloud命令启动缓慢? [英] Why gcloud command is slow to start?

查看:58
本文介绍了为什么gcloud命令启动缓慢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

只需输入 gcloud 即可获得帮助,只需5秒钟.

Just typing gcloud for help take 5 secs.

$ 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组件更新.参见 https://stackoverflow.com/users/4922212/zachary-newman

EDIT 2017-03-31: Zachary said that gcloud 148.0.0 addressed this issue. So try gcloud components update. see https://stackoverflow.com/users/4922212/zachary-newman

事实证明,对于Mac OS中的 .local 主机名, socket.gethostbyaddr(socket.gethostname())较慢.

It turns out that socket.gethostbyaddr(socket.gethostname()) is slow for .local hostname in macOS.

$ 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行.

So, for a workaround, just added the hostname to the localhost line of /etc/hosts.

127.0.0.1     localhost hiroshi-Macbook.local                             

此后,返回值有所不同,但它会立即返回.

After that is return value is different, but it returns in an instant.

>>> 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命令在哪里:

How do I get there

Where gcloud command is:

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

编辑shell脚本的结尾...

Edit the endline of the shell script...

...
+ 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所在的位置:

to echo where the gcloud.py is:

$ 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 是.

函数调用和回溯的参数是什么样的?我在 gcloud.py

What is the argument of the function call and backtrace look like? I added some lines before main() of gcloud.py

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

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

Execute gcloud again. I got it is my .local name of my machine.

$ 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()

这篇关于为什么gcloud命令启动缓慢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆