[RFE]Neutron API server: unexpected behavior with multiple long live clients
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Fix Released
|
Medium
|
Unassigned |
Bug Description
High level description:
The current openstack API server uses eventlet.
But in some scenarios in real system, such as during large system deployment stage, there are many compute nodes which caused many long-lived connections from nova-compute to the neutron API, this will cause issue/unexpected behavior as below:
1. for single neutron server case:
if neutron server has all of its greenthreads tied up on open sockets, when one more connection request arrives, the server call accept() but will never distribute it to a working thread to process it and the client will timeout with long time waiting (e.g. CONF.client_
Expect behavior: return quick TCP connect timeout if no processing thread available
2. for multiple neutron server cases (e.g. cfg.CONF.
in this case, there are multiple neutron server child processes waiting for client requests (e.g. doing accept() on the same socket), if one neutron server's accept() is invoked by linux kernel to accept a client request but all of its greenthreads had tied up on open sockets then the client will timeout with long time waiting. But actually, at this time, other neutron child processes may still have available greenthreads to process this request but there is no opportunity for them to process it (as accepted by the first neutron server child process).
Expect behavior: the request can be processed if any of neutron server process has available greenthread or return quick TCP connect timeout if no processing thread available
Version: latest devstack
Potential solution: implement a custom pool for wsgi.server which will block the spawn_n call (e.g. by sem.acquire()) to avoid calling accept() until green working thread available.
Changed in neutron: | |
importance: | Undecided → Medium |
status: | New → Confirmed |
This may be a new RFE for Neutron. But to be honest, I'm not familiar about your mentioned, we can discuss this in the weekly driver meeting.