跳至內容

ansible執行速度慢怎麼解決

更新時間
快连VPN:速度和安全性最佳的VPN服务
快连VPN:速度和安全性最佳的VPN服务

收到項目反饋,客戶在使用我們提供的工具部署產品時遇到了困難,在主機添加步驟上遇到了問題,導致實施團隊無法繼續推進工作,因此向我們尋求幫助。

環境信息:kylin10

架構:arm

初見端倪

在系統部署過程中,針對主機的批量操作,我們開發時採用了ansible劇本。最近遇到了執行過程卡頓的問題,初步懷疑是ansible執行時出現了阻塞。爲了驗證這一點,我已經發送了一條命令給現場進行測試。

localhost$ date2024年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 test192.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執行速度慢怎麼解決的詳細內容,更多請關注本站其它相關文章!

更新時間

發表留言

請注意,留言須先通過審核才能發佈。