Rally hits filedescriptor limit

Bug #1657790 reported by Daniel Trautmann
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Rally
Opinion
Undecided
Unassigned

Bug Description

Rally hit the filedescriptor limit in multiple test runs.
This is what I got from the run output:

2017-01-19 16:00:04.786 27098 WARNING rally.plugins.openstack.cleanup.manager [-] Seems like rally.plugins.openstack.cleanup.resources.SwiftObject.list(self) method is broken. It shouldn't raise any exceptions.
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager [-] filedescriptor out of range in select()
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager Traceback (most recent call last):
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/rally/plugins/openstack/cleanup/manager.py", line 140, in _publish
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager for raw_resource in rutils.retry(3, manager.list):
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/rally/common/utils.py", line 220, in retry
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager return func(*args, **kwargs)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/rally/plugins/openstack/cleanup/resources.py", line 743, in list
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager containers = self._manager().get_account(full_listing=True)[1]
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/rally/plugins/openstack/cleanup/resources.py", line 718, in _manager
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager return getattr(client, self._service)()
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/rally/osclients.py", line 208, in __call__
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager self.cache[key] = self.create_client(*args, **kwargs)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/rally/osclients.py", line 591, in create_client
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager auth_token = self.keystone.auth_ref.auth_token
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/rally/osclients.py", line 231, in auth_ref
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager sess, plugin = self.get_session()
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/rally/osclients.py", line 264, in get_session
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager password_args["auth_url"]).version_data()[0]["version"][0])
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/positional/__init__.py", line 101, in inner
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager return wrapped(*args, **kwargs)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/keystoneauth1/discover.py", line 140, in __init__
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager authenticated=authenticated)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/positional/__init__.py", line 101, in inner
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager return wrapped(*args, **kwargs)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/keystoneauth1/discover.py", line 40, in get_version_data
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager resp = session.get(url, headers=headers, authenticated=authenticated)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/keystoneauth1/session.py", line 758, in get
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager return self.request(url, 'GET', **kwargs)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/positional/__init__.py", line 101, in inner
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager return wrapped(*args, **kwargs)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/keystoneauth1/session.py", line 616, in request
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager resp = send(**kwargs)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/keystoneauth1/session.py", line 674, in _send_request
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager resp = self.session.request(method, url, **kwargs)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 488, in request
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager resp = self.send(prep, **send_kwargs)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 609, in send
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager r = adapter.send(request, **kwargs)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 423, in send
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager timeout=timeout
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connectionpool.py", line 594, in urlopen
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager chunked=chunked)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connectionpool.py", line 350, in _make_request
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager self._validate_conn(conn)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connectionpool.py", line 835, in _validate_conn
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager conn.connect()
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connection.py", line 323, in connect
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager ssl_context=context)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py", line 324, in ssl_wrap_socket
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager return context.wrap_socket(sock, server_hostname=server_hostname)
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 419, in wrap_socket
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager rd, _, _ = select.select([sock], [], [], sock.gettimeout())
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager ValueError: filedescriptor out of range in select()
2017-01-19 16:00:04.786 27098 ERROR rally.plugins.openstack.cleanup.manager

I'm trying to do some kind of stress test using the following config:
---
  SwiftObjects.create_container_and_object_then_delete_all:
  {% for concurrent in range(2, 102, 2) %}
    -
      args:
        objects_per_container: 1
        object_size: 65536
      runner:
        type: constant
        times: {{ concurrent * 10 }}
        concurrency: {{ concurrent }}
  {% endfor %}

Rally reached the limit at a concurrency of around 12 or 14.

I already increased the open file limit.
ulimit -n
150000

Rally Version: 0.7.1~dev286

It seems there is another limit. I found some similar issues in other projects like Ansible.

Revision history for this message
Andriy Kurilin (andreykurilin) wrote :

Unfortunately, there is a known issue(not related to rally) - https://en.wikipedia.org/wiki/C10k_problem

Changed in rally:
status: New → Opinion
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.