日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

php小編柚子發現,最近一些用戶反饋在Golang中使用libvirt guest-agent時遇到了不可用的問題。libvirt guest-agent是libvirt庫的一部分,用于與虛擬機中的客戶操作系統進行通信。然而,一些用戶在嘗試使用它時遇到了連接問題或功能失效的情況。這對于那些依賴libvirt guest-agent進行虛擬機管理和監控的開發人員來說是一個令人沮喪的問題。接下來,我們將探討可能的原因和解決方案,幫助解決這個問題。

問題內容

我嘗試通過 libvirt golang api 與 qemu 實例上的來賓代理進行通信。但是,它總是拒絕我與的連接

2022-12-02t00:10:43.799+0100    dpanic  test/main.go:335    failed to connect to guest  {"error": "virerror(code=86, domain=10, message='guest agent is not responding: qemu guest agent is not connected')"}

登錄后復制

即使 qemu 實例已完全啟動并且可以通過命令行使用來賓代理

sudo virsh qemu-agent-command test-vm '{"execute":"guest-info"}'

登錄后復制

這是實現中的錯誤還是我必須在 go 代碼中的某個位置注冊代理?我無法在文檔中找到參考資料。

    
      
      
      
      
    

登錄后復制

謝謝!

解決方法

不知道最后是什么原因。我有一個循環并且正在訪問,或者更具體地說,嘗試訪問代理。我將其更改為使用 500 毫秒的超時,但它不起作用。

type qemuStatusResponse struct {
    Return struct {
        Exitcode int    `json:"exitcode,omitempty"`
        OutData  string `json:"out-data,omitempty"`
        Exited   bool   `json:"exited,omitempty"`
        ErrData  string `json:"err-data,omitempty"`
    } `json:"return,omitempty"`
}

func (l *LibvirtInstance) waitForCompletion(ctx context.Context, pid int, domain *libvirt.Domain) (response *qemuStatusResponse, err error) {
    response = &qemuStatusResponse{}

    ticker := time.NewTicker(500 * time.Millisecond)
    defer ticker.Stop()
    for {
        select {
        case <-ticker.C:
            result, err := domain.QemuAgentCommand(
                fmt.Sprintf(`
                {
                    "execute": "guest-exec-status",
                    "arguments": {
                        "pid": %d
                    }
                    }`, pid),
                libvirt.DOMAIN_QEMU_AGENT_COMMAND_BLOCK, 0)
            if err != nil {
                return nil, err
            }
            if err := json.Unmarshal([]byte(result), response); err != nil {
                return nil, err
            }
            if response.Return.Exited {
                return response, nil
            }
        case <-ctx.Done():
            return nil, ctx.Err()
        }
    }
}

登錄后復制

此外,我遇到了一些穩定性問題(即,當對連接執行多個并發請求時,它有時會被破壞)。我在網上發現一些文章建議將用戶添加到 kvm 組。這對我有用。

分享到:
標簽:并發請求
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定