Reviewed:  https://review.openstack.org/367746
Committed: 
https://git.openstack.org/cgit/openstack/nova/commit/?id=386812e287198cd2d340d273753ef06075f7c05d
Submitter: Jenkins
Branch:    master

commit 386812e287198cd2d340d273753ef06075f7c05d
Author: Mathieu Gagné <mga...@iweb.com>
Date:   Fri Sep 9 00:35:50 2016 -0400

    Add sync_power_state_pool_size option
    
    The sync_power_state_pool_size option allows to set
    the number of greenthreads available for use to sync power states.
    
    It can be used to reduce the number of concurrent requests
    made to the hypervisor or system with real instance power states
    for performance reasons.
    
    Closes-bug: #1621987
    Change-Id: I9cf900314d71c44ec51eb190c102ddc60e13a767


** Changed in: nova
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1621987

Title:
  Power state synchronization in compute is too agressive

Status in OpenStack Compute (nova):
  Fix Released

Bug description:
  By default, 1000 greenthreads can be used to synchronize the power
  state of instances running on a compute node.

  In the Ironic context, this means 1000 simultaneous HTTP requests can
  be initiated to the Ironic API. Some of those requests can fail with
  the following error:

      ERROR nova.compute.manager [-] [instance: XXXXXXXXXXXXXX] Periodic 
sync_power_state task had an error while processing an instance.
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX] Traceback (most 
recent call last):
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]   File 
"/opt/nova/local/lib/python2.7/site-packages/nova/compute/manager.py", line 
6083, in _sync
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]     
query_driver_power_state_and_sync()
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]   File 
"/opt/nova/local/lib/python2.7/site-packages/oslo_concurrency/lockutils.py", 
line 252, in inner
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]     return f(*args, 
**kwargs)
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]   File 
"/opt/nova/local/lib/python2.7/site-packages/nova/compute/manager.py", line 
6080, in query_driver_power_state_and_sync
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]     
self._query_driver_power_state_and_sync(context, db_instance)
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]   File 
"/opt/nova/local/lib/python2.7/site-packages/nova/compute/manager.py", line 
6110, in _query_driver_power_state_and_sync
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]     vm_instance = 
self.driver.get_info(db_instance)
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]   File 
"/opt/nova/local/lib/python2.7/site-packages/nova/virt/ironic/driver.py", line 
557, in get_info
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]     node = 
_validate_instance_and_node(self.ironicclient, instance)
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]   File 
"/opt/nova/local/lib/python2.7/site-packages/nova/virt/ironic/driver.py", line 
126, in _validate_instance_and_node
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]     return 
ironicclient.call("node.get_by_instance_uuid", instance.uuid)
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]   File 
"/opt/nova/local/lib/python2.7/site-packages/nova/virt/ironic/client_wrapper.py",
 line 122, in call
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]     return 
self._multi_getattr(client, method)(*args, **kwargs)
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]   File 
"/opt/nova/local/lib/python2.7/site-packages/ironicclient/v1/node.py", line 
151, in get_by_instance_uuid
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]     nodes = 
self._list(self._path(path), 'nodes')
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]   File 
"/opt/nova/local/lib/python2.7/site-packages/ironicclient/common/base.py", line 
119, in _list
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]     resp, body = 
self.api.json_request('GET', url)
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]   File 
"/opt/nova/local/lib/python2.7/site-packages/ironicclient/common/http.py", line 
351, in json_request
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]     resp, body_iter 
= self._http_request(url, method, **kwargs)
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]   File 
"/opt/nova/local/lib/python2.7/site-packages/ironicclient/common/http.py", line 
160, in wrapper
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]     return 
func(self, url, method, **kwargs)
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]   File 
"/opt/nova/local/lib/python2.7/site-packages/ironicclient/common/http.py", line 
296, in _http_request
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]     resp = 
conn.getresponse()
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]   File 
"/usr/lib/python2.7/httplib.py", line 1051, in getresponse
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]     response.begin()
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]   File 
"/usr/lib/python2.7/httplib.py", line 415, in begin
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]     version, 
status, reason = self._read_status()
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]   File 
"/usr/lib/python2.7/httplib.py", line 379, in _read_status
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX]     raise 
BadStatusLine(line)
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX] BadStatusLine: ''
      ERROR nova.compute.manager [instance: XXXXXXXXXXXXXX] 

  There should be a way to limit the number of simultaneous requests
  made against the hypervisor to synchronize the instance power states
  so it's not overwhelm.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1621987/+subscriptions

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to