httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jacob Champion <jacob.champ...@ni.com>
Subject Debugging mod_websocket -- any others out there?
Date Wed, 25 Feb 2015 00:16:51 GMT
Hi everyone,

[I'm keeping this short in case it's the wrong list for this topic -- if
you think I should go to apache-dev or apache-users instead, just say
the word.]

First some background: I'm interested in running a WebSocket endpoint,
in production, from inside Apache 2.4. I'm aware that there are
architectural issues with long-lived TCP connections hogging Apache
resources, and at the moment I'm prepared to live with the consequences
of that (or at least I think I am).

I've been working with mod_websocket [1] for a few weeks now. Things
were going very well until we ran into crashes under heavy load. I
_think_ they are related to the threading model used by mod_websocket --
it spins up a new thread and a new bucket brigade to write to the
connection, while the original thread and brigade block to read
messages. Unfortunately I don't know enough about the brigade system to
know whether that's kosher or even fixable.

The original author appears to have moved on to other things, if the
Github history and open pull requests are any indication. So my initial
questions for you are:

- Is there enough interest in mod_websocket for my debugging it to be
worth anyone else's time? It seems that there was some initial interest
in folding mod_websocket back into ASF, but that died at some point.

- Does anyone know of a community of mod_websocket users that I'm
missing? Contributing fixes back to whomever is using it would be ideal.

- Is it even possible/safe to do an asynchronous "one thread reads, one
thread writes" operation in a production-quality module? (In other
words, is mod_websocket just unfixably broken?)

Basically I'm hoping to get some idea of whether I'm wasting my time. I
believe the primary alternative would be to use a second WebSocket-savvy
server on the backend, and run communication to it through
mod_proxy_wstunnel.

Thanks for your input!

Jacob Champion
LabVIEW R&D
National Instruments

[1] https://github.com/disconnect/apache-websocket

Mime
View raw message