Wasn't there some idea that this was because nova-api doesn't monkeypatch all of the libraries?
Vish
On May 4, 2011, at 1:58 PM, Soren Hansen wrote:
> I'm still blaming eventlet for this. Looking at the logs, it looks like
> the sheer volume of requests simply makes it take more than 5 seconds
> before the event loop in eventlet gets back to the attempt to establish
> a connection. We can optimise the time-per-request, but that'll won't
> solve anything, it'll just hide the problem until we try 100 or 200
> requests at a time. Same if we increase the timeout.
>
> --
> You received this bug notification because you are a member of Nova Bug
> Team, which is subscribed to OpenStack Compute (nova).
> https://bugs.launchpad.net/bugs/771512
>
> Title:
> Timeout from API with 50 Simultaneous Builds
>
> Status in OpenStack Compute (Nova):
> Confirmed
>
> Bug description:
> Running cactus, I attempted a build of 50 VMs at once via the API and
> ran into a timeout where 12 of the 50 VMs timed out and are stuck in
> build. The remaining went active.
>
> for i in `seq 1 50`; do nova boot test --flavor 1 --image 10 & >
> /dev/null ; echo $i ; done
>
> API Limits were raised well past this in limits.py for stress testing.
>
> 2011-04-26 17:36:51,852 ERROR nova.api.openstack [-] Caught error: timed out
> (nova.api.openstack): TRACE: Traceback (most recent call last):
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/nova/api/openstack/__init__.py", line 59, in __call__
> (nova.api.openstack): TRACE: return req.get_response(self.application)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/webob/request.py", line 919, in get_response
> (nova.api.openstack): TRACE: application, catch_exc_info=False)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/webob/request.py", line 887, in call_application
> (nova.api.openstack): TRACE: app_iter = application(self.environ, start_response)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/webob/dec.py", line 159, in __call__
> (nova.api.openstack): TRACE: return resp(environ, start_response)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/webob/dec.py", line 159, in __call__
> (nova.api.openstack): TRACE: return resp(environ, start_response)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/webob/dec.py", line 159, in __call__
> (nova.api.openstack): TRACE: return resp(environ, start_response)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/routes/middleware.py", line 131, in __call__
> (nova.api.openstack): TRACE: response = self.app(environ, start_response)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/webob/dec.py", line 159, in __call__
> (nova.api.openstack): TRACE: return resp(environ, start_response)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/webob/dec.py", line 147, in __call__
> (nova.api.openstack): TRACE: resp = self.call_func(req, *args, **self.kwargs)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/webob/dec.py", line 208, in call_func
> (nova.api.openstack): TRACE: return self.func(req, *args, **kwargs)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/nova/wsgi.py", line 356, in __call__
> (nova.api.openstack): TRACE: result = method(**arg_dict)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/nova/api/openstack/servers.py", line 171, in create
> (nova.api.openstack): TRACE: injected_files=injected_files)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/nova/compute/api.py", line 256, in create
> (nova.api.openstack): TRACE: "injected_files": injected_files}})
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/nova/rpc.py", line 394, in cast
> (nova.api.openstack): TRACE: publisher = TopicPublisher(connection=conn, topic=topic)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/nova/rpc.py", line 241, in __init__
> (nova.api.openstack): TRACE: super(TopicPublisher, self).__init__(connection=connection)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/carrot/messaging.py", line 653, in __init__
> (nova.api.openstack): TRACE: self.declare()
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/carrot/messaging.py", line 664, in declare
> (nova.api.openstack): TRACE: auto_delete=self.auto_delete)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/carrot/backends/pyamqplib.py", line 240, in exchange_declare
> (nova.api.openstack): TRACE: return self.channel.exchange_declare(exchange=exchange,
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/carrot/backends/pyamqplib.py", line 179, in channel
> (nova.api.openstack): TRACE: self._channel_ref = weakref.ref(self.connection.get_channel())
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/carrot/connection.py", line 150, in get_channel
> (nova.api.openstack): TRACE: return self.connection.channel()
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/carrot/connection.py", line 120, in connection
> (nova.api.openstack): TRACE: self._connection = self._establish_connection()
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/carrot/connection.py", line 133, in _establish_connection
> (nova.api.openstack): TRACE: return self.create_backend().establish_connection()
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/carrot/backends/pyamqplib.py", line 195, in establish_connection
> (nova.api.openstack): TRACE: connect_timeout=conninfo.connect_timeout)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/amqplib/client_0_8/connection.py", line 125, in __init__
> (nova.api.openstack): TRACE: self.transport = create_transport(host, connect_timeout, ssl)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/amqplib/client_0_8/transport.py", line 220, in create_transport
> (nova.api.openstack): TRACE: return TCPTransport(host, connect_timeout)
> (nova.api.openstack): TRACE: File "/usr/lib/pymodules/python2.6/amqplib/client_0_8/transport.py", line 58, in __init__
> (nova.api.openstack): TRACE: self.sock.connect((host, port))
> (nova.api.openstack): TRACE: File "/usr/lib/python2.6/dist-packages/eventlet/greenio.py", line 178, in connect
> (nova.api.openstack): TRACE: timeout_exc=socket.timeout("timed out"))
> (nova.api.openstack): TRACE: File "/usr/lib/python2.6/dist-packages/eventlet/hubs/__init__.py", line 121, in trampoline
> (nova.api.openstack): TRACE: return hub.switch()
> (nova.api.openstack): TRACE: File "/usr/lib/python2.6/dist-packages/eventlet/hubs/hub.py", line 177, in switch
> (nova.api.openstack): TRACE: return self.greenlet.switch()
> (nova.api.openstack): TRACE: timeout: timed out
> (nova.api.openstack): TRACE:
Wasn't there some idea that this was because nova-api doesn't monkeypatch all of the libraries?
Vish
On May 4, 2011, at 1:58 PM, Soren Hansen wrote:
> I'm still blaming eventlet for this. Looking at the logs, it looks like /bugs.launchpad .net/bugs/ 771512 openstack) : TRACE: Traceback (most recent call last): openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/nova/ api/openstack/ __init_ _.py", line 59, in __call__ openstack) : TRACE: return req.get_ response( self.applicatio n) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/webob/ request. py", line 919, in get_response openstack) : TRACE: application, catch_exc_ info=False) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/webob/ request. py", line 887, in call_application openstack) : TRACE: app_iter = application( self.environ, start_response) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/webob/ dec.py" , line 159, in __call__ openstack) : TRACE: return resp(environ, start_response) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/webob/ dec.py" , line 159, in __call__ openstack) : TRACE: return resp(environ, start_response) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/webob/ dec.py" , line 159, in __call__ openstack) : TRACE: return resp(environ, start_response) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/routes/ middleware. py", line 131, in __call__ openstack) : TRACE: response = self.app(environ, start_response) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/webob/ dec.py" , line 159, in __call__ openstack) : TRACE: return resp(environ, start_response) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/webob/ dec.py" , line 147, in __call__ openstack) : TRACE: resp = self.call_func(req, *args, **self.kwargs) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/webob/ dec.py" , line 208, in call_func openstack) : TRACE: return self.func(req, *args, **kwargs) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/nova/ wsgi.py" , line 356, in __call__ openstack) : TRACE: result = method(**arg_dict) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/nova/ api/openstack/ servers. py", line 171, in create openstack) : TRACE: injected_ files=injected_ files) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/nova/ compute/ api.py" , line 256, in create openstack) : TRACE: "injected_files": injected_files}}) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/nova/ rpc.py" , line 394, in cast openstack) : TRACE: publisher = TopicPublisher( connection= conn, topic=topic) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/nova/ rpc.py" , line 241, in __init__ openstack) : TRACE: super(TopicPubl isher, self)._ _init__ (connection= connection) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/carrot/ messaging. py", line 653, in __init__ openstack) : TRACE: self.declare() openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/carrot/ messaging. py", line 664, in declare openstack) : TRACE: auto_delete= self.auto_ delete) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/carrot/ backends/ pyamqplib. py", line 240, in exchange_declare openstack) : TRACE: return self.channel. exchange_ declare( exchange= exchange, openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/carrot/ backends/ pyamqplib. py", line 179, in channel openstack) : TRACE: self._channel_ref = weakref. ref(self. connection. get_channel( )) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/carrot/ connection. py", line 150, in get_channel openstack) : TRACE: return self.connection .channel( ) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/carrot/ connection. py", line 120, in connection openstack) : TRACE: self._connection = self._establish _connection( ) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/carrot/ connection. py", line 133, in _establish_ connection openstack) : TRACE: return self.create_ backend( ).establish_ connection( ) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/carrot/ backends/ pyamqplib. py", line 195, in establish_ connection openstack) : TRACE: connect_ timeout= conninfo. connect_ timeout) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/amqplib/ client_ 0_8/connection. py", line 125, in __init__ openstack) : TRACE: self.transport = create_ transport( host, connect_timeout, ssl) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/amqplib/ client_ 0_8/transport. py", line 220, in create_transport openstack) : TRACE: return TCPTransport(host, connect_timeout) openstack) : TRACE: File "/usr/lib/ pymodules/ python2. 6/amqplib/ client_ 0_8/transport. py", line 58, in __init__ openstack) : TRACE: self.sock. connect( (host, port)) openstack) : TRACE: File "/usr/lib/ python2. 6/dist- packages/ eventlet/ greenio. py", line 178, in connect openstack) : TRACE: timeout_ exc=socket. timeout( "timed out")) openstack) : TRACE: File "/usr/lib/ python2. 6/dist- packages/ eventlet/ hubs/__ init__. py", line 121, in trampoline openstack) : TRACE: return hub.switch() openstack) : TRACE: File "/usr/lib/ python2. 6/dist- packages/ eventlet/ hubs/hub. py", line 177, in switch openstack) : TRACE: return self.greenlet. switch( ) openstack) : TRACE: timeout: timed out openstack) : TRACE:
> the sheer volume of requests simply makes it take more than 5 seconds
> before the event loop in eventlet gets back to the attempt to establish
> a connection. We can optimise the time-per-request, but that'll won't
> solve anything, it'll just hide the problem until we try 100 or 200
> requests at a time. Same if we increase the timeout.
>
> --
> You received this bug notification because you are a member of Nova Bug
> Team, which is subscribed to OpenStack Compute (nova).
> https:/
>
> Title:
> Timeout from API with 50 Simultaneous Builds
>
> Status in OpenStack Compute (Nova):
> Confirmed
>
> Bug description:
> Running cactus, I attempted a build of 50 VMs at once via the API and
> ran into a timeout where 12 of the 50 VMs timed out and are stuck in
> build. The remaining went active.
>
> for i in `seq 1 50`; do nova boot test --flavor 1 --image 10 & >
> /dev/null ; echo $i ; done
>
> API Limits were raised well past this in limits.py for stress testing.
>
> 2011-04-26 17:36:51,852 ERROR nova.api.openstack [-] Caught error: timed out
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.
> (nova.api.