ansible執行速度慢怎麼解決
收到專案回饋,客戶在使用我們提供的工具部署產品時遇到了困難,在主機新增步驟上遇到了問題,導致實施團隊無法繼續推進工作,因此向我們尋求協助。
環境資訊:kylin10
架構:arm
#初見端倪
#在系統部署過程中,針對主機的大量操作,我們開發時採用了ansible劇本。最近遇到了執行過程卡頓的問題,初步懷疑是ansible執行時出現了阻塞。為了驗證這一點,我已經發送了一條命令給現場進行測試。
localhost$ date 2024年02月19日星期 17:30:41 CST localhost$ ansible all -i "192.168.2.84, -m shell -a 'date' --l become --become-method=sudo --become-user=root -u test 192.168.2.84 CHANGED rc=0 >> 2024年02月19日星期 17:33:34 CST
果然,一條簡單的ansible指令,環境執行了2min多才回傳結果,問題原因就出在這裡了,有了大致方向。
ansible實際執行時仍然依賴SSH遠端連接,之前遇到SSH連接速度緩慢的情況,初步推測可能是由於SSH連接速度慢導致執行返回速度慢。
檢查ssh參數,查/etc/ssh/sshd_config配置
GSSAPIAuthentication no #关闭SERVER上的GSS认证
在linux中,預設就是開啟了SSH的反向DNS解析,這個會消耗大量時間,因此需要關閉。在設定檔中,雖然UseDNS yes是被註解的,但預設開關就是yes
UseDNS=no #关闭SERVER上DNS反向解析
結果發現,專案上這2個ssh參數配置都是和上面一致的,並且手動測試ssh登入對端主機,速度很快
問題分析
沒有頭緒,只能用linux的strace指令追蹤下系統呼叫了
#查看strace日誌發現有大量的select等待,應該是在執行某項操作時長時間阻塞。
使用ansible調試
ansible all -i "192.168.2.84, -m shell -a 'date' --l become --become-method=sudo --become-user=root -u test -vvv
指令後面加上-vvv就可以看到詳細的執行過程了
#解決問題
從debug訊息中,看到報錯”mux_client_read_packet: read header failed: Broken pipe”,執行腳本的地方可以看到在執行python相關的命令,ansible依賴於python,是否和python版本有關係呢?
在網路上查看資料說ansible和python有相容性問題。
#於是檢查下python版本,可以看到python預設版本為python2,但是系統上也有python3,嘗試將軟連結修改python3.7驗證
#再次執anible指令
#執行時間1.3s,看來是ansible和python版本的兼容性導致了這次問題。
以上是ansible執行速度慢怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Ansible工作原理從上面的圖可以了解到:管理端支援local、ssh、zeromq三種方式連接被管理端,預設使用基於ssh的連接,這部分對應上面架構圖中的連接模組;可以按應用類型等方式進行HostInventory(主機清單)分類,管理節點透過各類模組實現對應的操作,單一模組,單一指令的批次執行,我們可以稱為ad-hoc;管理節點可以透過playbooks實作多個task的集合實作一類功能,如web服務的安裝部署、資料庫伺服器的批次備份等。 playbooks我們可以簡單的理解為,系統透過

官方文件:https://docs.ansible.com/ansible/latest/command_guide/intro_adhoc.html簡介Ad-hoc命令是一種臨時輸入並執行的命令,通常用於測試和調試。它們不需要永久保存,簡單來說,ad-hoc就是「即時命令」。常用模組1、command模組(預設模組)預設模組,沒有shell強大,基本上shell模組都可以支援command模組的功能。 【1】幫助ansible-doccommand#推薦使用下面這個ansible-doccomm

收到專案回饋,客戶在使用我們提供的工具部署產品時遇到了困難,在主機新增步驟上遇到了問題,導致實施團隊無法繼續進行工作,因此向我們尋求協助。環境資訊:kylin10架構:arm初見端倪在系統部署過程中,針對主機的批次操作,我們開發時採用了ansible劇本。最近遇到了執行過程卡頓的問題,初步懷疑是ansible執行時出現了阻塞。為了驗證這一點,我已經發送了一條命令給現場進行測試。 localhost$date2024年2月19日星期17:30:41CSTlocalhost$ansibleall-i

你所不知道的Linux遠端管理工具:精選五款推薦在現代的資訊科技領域中,Linux作業系統已經成為了許多企業和個人使用的首選作業系統之一。對於Linux系統管理員來說,遠端管理工具是非常重要的,可以幫助他們迅速、有效率地監控和管理遠端伺服器。本文將介紹五款你可能不知道的Linux遠端管理工具,並提供具體的程式碼範例,希望對你在Linux遠端管理中有所幫助。 tmu

Linux作為一種強大的作業系統,其遠端管理工具被廣泛應用於伺服器管理、網路監控等方面。在日常工作中,我們經常需要使用一些專門的工具來遠端管理Linux伺服器。本文將介紹五款實用的Linux遠端管理工具,並提供具體的程式碼範例來示範它們的用法。 1.SSHSSH(SecureShell)是一種加密網路協議,用於安全地遠端登入和執行命令。透過SSH,用戶可以在

Ansible是一種開源的自動化設定管理和部署工具,可以幫助管理員在多台伺服器上自動執行任務。在Ansible中,Playbook是用於描述自動化任務的YAML檔案。使用變數(variables)是Playbook功能的一個重要部分,它可以讓你的Playbook更靈活、可重複使用且易於維護。以下是AnsiblePlaybook中變數的一些基本用法:定義變數:可以在Playbook、inventory檔案、vars檔案或使用-e參數在命令列中定義變數。範例:在Playbook中定義變數:----na

Java對接ansible自動運維化平台實現文件採集分發此次對接主要為以下兩個功能:文件採集(對文件進行批量操作,包括批量從多台主機中採集共性文件如日誌文件)文件分發(對文件進行批次操作,包括大量從多台主機中分發共性檔案如日誌檔案)場景說明及ansibleyum安裝因ansible沒有Windows的安裝包,所以為了方便測試,搭建了一套Linux環境進行後續工作。此次採用yum方式安裝,採用yum方式安裝Ansible,先安裝EPEL來源。 yuminstall-yhttp://dl.fedor

如何在Linux上設定自動化部署工具(如Ansible)引言:在軟體開發和運維過程中,經常會遇到需要將應用程式部署到多台伺服器上的情況。手動部署無疑效率低且容易出錯,因此配置一個自動化部署工具是必不可少的。本文將介紹如何在Linux上設定一個常用的自動化部署工具-Ansible,以實現快速、可靠的應用程式部署。一、安裝Ansible打開終端,使用以下命令
