Hi all!
We are running Apache as a reverse proxy for WebSocket connections (in addition to serving a simple PHP website). We are using event MPM.
Every time Apache does a graceful restart (e.g. due to logrotate) we and up with at least one fully defunct Apache process, because it sets all the workers that are serving the WebSocket connections into 'G' state – which is how they will stay forever of course, as the WebSocket connections are meant to persist (that is what WebSocket are for!) and normally will not terminate. That means that the whole process these workers belong to becomes useless (also all other workers stop accepting connections during graceful restart) and sooner or later we end up with a fully defunct Apache server with error "AH00485: scoreboard is full, not at MaxRequestWorkers"
Question:
How can I tell Apache to do the "normal" graceful termination of "normal" connections (= wait for normal HTTP connections to finish serving the current request and close), but simply kill WebSocket connections (because they won't close/finish by themselves and have a re-connect logic anyway) so that I can perform graceful reload without "zombie-ing" processes.
If this is not possible Apache seems to be unusable for reverse-proxying WebSocket connections...:(