* [ANN] unicorn 6.1.0 - Rack HTTP server for fast clients and *nix
@ 2021-12-25 18:06 3% Eric Wong
0 siblings, 0 replies; 3+ results
From: Eric Wong @ 2021-12-25 18:06 UTC (permalink / raw)
To: ruby-talk, unicorn-public
unicorn is an HTTP server for Rack applications designed to only serve
fast clients on low-latency, high-bandwidth connections and take
advantage of features in Unix/Unix-like kernels. Slow clients should
only be served by placing a reverse proxy capable of fully buffering
both the the request and response in between unicorn and slow clients.
Disclaimer:
Due to its ability to tolerate crashes and isolate clients, unicorn
is unfortunately known to prolong the existence of bugs in applications
and libraries which run on top of it.
Consider this just an announcement to inform existing users of a
new version, not something to convince you to switch to something
that set the entire Ruby world back decades in terms of concurrency.
Note:
.onion URLs below are available for Tor users and can reduce
our operating costs:
* https://yhbt.net/unicorn/
http://unicorn.7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/
* public list: unicorn-public@yhbt.net
* mail archives: https://yhbt.net/unicorn-public/
http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/unicorn-public/
* git clone https://yhbt.net/unicorn.git
torsocks git clone http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/unicorn.git
* https://yhbt.net/unicorn/NEWS.atom.xml
http://unicorn.7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/NEWS.atom.xml
* nntps://news.public-inbox.org/inbox.comp.lang.ruby.unicorn
nntp://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.lang.ruby.unicorn
imaps://yhbt.net/inbox.comp.lang.ruby.unicorn.0
imap://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.lang.ruby.unicorn.0
Changes:
This release reduces CPU usage for Linux 4.5+ in most cases.
See "[PATCH 6/6] use EPOLLEXCLUSIVE on Linux 4.5+" for more details:
https://yhbt.net/unicorn-public/20211001030923.26705-7-bofh@yhbt.net/
There's a couple of updates for Ruby 3.1, but we've finally
started relying on Ruby 2.0.0 features after 9 years :P
(so Ruby 1.9.3 users are stuck with older versions).
And the usual round of doc updates and some build speedups.
13 changes by the Bozo Doofus maintainer since v6.0.0:
test_util: less excessive encoding tests
drop Ruby 1.9.3 support, require 2.0+ for now
drop unnecessary IO#close_on_exec=true assignment
extconf.rb: get rid of unnecessary checks
makefile: reduce unnecessary rebuilds
HACKING: drop outdated information about pandoc
http_server: get rid of Process.ppid check
worker_loop: get rid of select() avoidance hack
use EPOLLEXCLUSIVE on Linux 4.5+
allow Ruby to deduplicate remaining globals
epollexclusive: remove rb_gc_force_recycle call
drop Ruby version warning, fix speling errer
doc: v3 .onion updates, nntp => nntps, minor wording changes
^ permalink raw reply [relevance 3%]
* [PATCH 4/6] http_server: get rid of Process.ppid check
2021-10-01 3:09 4% [PATCH 0/6] reduce thundering herds on Linux 4.5+ Eric Wong
@ 2021-10-01 3:09 7% ` Eric Wong
0 siblings, 0 replies; 3+ results
From: Eric Wong @ 2021-10-01 3:09 UTC (permalink / raw)
To: unicorn-public
It's actually been unnecessary since commit 6f6e4115b4bb03e5
(rework master-to-worker signaling to use a pipe, 2013-12-09)
---
lib/unicorn/http_server.rb | 3 ---
1 file changed, 3 deletions(-)
diff --git a/lib/unicorn/http_server.rb b/lib/unicorn/http_server.rb
index cd6e63b..09c5ec2 100644
--- a/lib/unicorn/http_server.rb
+++ b/lib/unicorn/http_server.rb
@@ -708,7 +708,6 @@ def reopen_worker_logs(worker_nr)
# for connections and doesn't die until the parent dies (or is
# given a INT, QUIT, or TERM signal)
def worker_loop(worker)
- ppid = @master_pid
readers = init_worker_process(worker)
nr = 0 # this becomes negative if we need to reopen logs
@@ -745,8 +744,6 @@ def worker_loop(worker)
redo
end
- ppid == Process.ppid or return
-
# timeout used so we can detect parent death:
worker.tick = time_now.to_i
ret = IO.select(readers, nil, nil, @timeout) and ready = ret[0]
^ permalink raw reply related [relevance 7%]
* [PATCH 0/6] reduce thundering herds on Linux 4.5+
@ 2021-10-01 3:09 4% Eric Wong
2021-10-01 3:09 7% ` [PATCH 4/6] http_server: get rid of Process.ppid check Eric Wong
0 siblings, 1 reply; 3+ results
From: Eric Wong @ 2021-10-01 3:09 UTC (permalink / raw)
To: unicorn-public
1-5 are straightforward changes, with 4+5 are probably
being long overdue.
PATCH 6/6 is fairly significant (more detail in that message),
but doesn't benefit completely saturated instances, either.
I don't know if completely saturated instances are that common,
actually...
Yup, unicorn using epoll: WTF :P
Eric Wong (6):
extconf.rb: get rid of unnecessary checks
makefile: reduce unnecessary rebuilds
HACKING: drop outdated information about pandoc
http_server: get rid of Process.ppid check
worker_loop: get rid of select() avoidance hack
use EPOLLEXCLUSIVE on Linux 4.5+
GNUmakefile | 4 +-
HACKING | 7 --
ext/unicorn_http/c_util.h | 18 ++---
ext/unicorn_http/epollexclusive.h | 125 ++++++++++++++++++++++++++++++
ext/unicorn_http/ext_help.h | 24 ------
ext/unicorn_http/extconf.rb | 6 +-
ext/unicorn_http/httpdate.c | 1 +
ext/unicorn_http/unicorn_http.rl | 3 +
lib/unicorn/http_server.rb | 45 +++++------
lib/unicorn/select_waiter.rb | 6 ++
t/test-lib.sh | 3 +-
test/unit/test_waiter.rb | 34 ++++++++
12 files changed, 199 insertions(+), 77 deletions(-)
create mode 100644 ext/unicorn_http/epollexclusive.h
create mode 100644 lib/unicorn/select_waiter.rb
create mode 100644 test/unit/test_waiter.rb
^ permalink raw reply [relevance 4%]
Results 1-3 of 3 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2021-10-01 3:09 4% [PATCH 0/6] reduce thundering herds on Linux 4.5+ Eric Wong
2021-10-01 3:09 7% ` [PATCH 4/6] http_server: get rid of Process.ppid check Eric Wong
2021-12-25 18:06 3% [ANN] unicorn 6.1.0 - Rack HTTP server for fast clients and *nix Eric Wong
Code repositories for project(s) associated with this public inbox
https://yhbt.net/unicorn.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).