libvirt斷掉後導緻compute服務挂掉,是因為在重連libvirt的時候使用 wrapped_conn = tpool.proxy_call( (libvirt.virDomain, libvirt.virConnect), self._connect, self.uri(), self.read_only)
該函數執行多次後卡死,使得整個compute服務卡主
這是報錯的資訊: Traceback (most recent call last): File "/usr/lib/python2.6/site-packages/eventlet/hubs/hub.py", line 346, in fire_timers timer() File "/usr/lib/python2.6/site-packages/eventlet/hubs/timer.py", line 56, in __call__ cb(*args, **kw) File "/usr/lib/python2.6/site-packages/eventlet/semaphore.py", line 121, in _do_acquire waiter.switch() error: cannot switch to a different thread
暫時修改CONF.libvirt_nonblocking=false可避免 或者改為:
wrapped_conn = tpool.proxy_call( (libvirt.virDomain, libvirt.virConnect), self._connect, self.uri(), self.read_only,nonblocking=True)