私たちが最初にすることは、sshを使用して2,000を超えるサーバーから簡単な情報を取得することです。これは30秒で完了することです。
GNUパラレルとPython paramiko +マルチプロセッシングの使用
どちらも速度を遅くするランダムなボトルネックがあります。この問題を修正できますか?カーネルのチューニングは完了しましたか?使用されるオペレーティングシステムはCentOS 7(Core 24)です。
Pythonコードの追加
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host,username=username,password=password)
stdin, stdout, stderr = ssh.exec_command(command)
outlines=stdout.readlines()
resp=''.join(outlines)
print(resp)
stdin.close()
ssh.close()
except Exception as err:
print(err)
if __name__ == '__main__':
start = time.time()
host = subprocess.check_output("echo 10.0.{{1..26},{51..146}}.{1..100}", shell="True", universal_newlines=True)
list = host.strip().split(" ")
print (list)
pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())
pool.map(loadavg, list)
pool.close()
pool.join()
print("time :", time.time() - start)