* [ANN] yahns 1.15.0 -_- sleepy app server for Ruby
@ 2017-03-23 4:07 3% Eric Wong
0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2017-03-23 4:07 UTC (permalink / raw)
To: ruby-talk, yahns-public
A Free Software, multi-threaded, non-blocking network
application server designed for low _idle_ power consumption.
It is primarily optimized for applications with occasional users
which see little or no traffic. yahns currently hosts Rack/HTTP
applications, but may eventually support other application
types. Unlike some existing servers, yahns is extremely
sensitive to fatal bugs in the applications it hosts.
* git clone git://yhbt.net/yahns
* https://yhbt.net/yahns/README
* https://yhbt.net/yahns/NEWS.atom.xml (supported by most "RSS" readers)
* we only accept plain-text email yahns-public@yhbt.net
* and archive all the mail we receive: https://yhbt.net/yahns-public/
* nntp://news.public-inbox.org/inbox.comp.lang.ruby.yahns
lrg nabgure ubeevoyl-anzrq freire :>
Changes:
yahns 1.15.0
Minor changes to reduce allocations and simplify our code
and dependencies. Nothing particularly interesting unless
you're the type of person who appreciates brake pedals
in with holes drilled in them for weight reduction.
11 changes since 1.14.1 (2016-12-14):
stream_input: avoid allocation for common #read case
proxy_pass: add a note about the instability of this
tee_input: simplify conditional for writing to temporary file
proxy_http_response: reduce memory pressure from larger headers
http_response: make response headers eligible for GC, sooner
update more referenced URLs to be HTTPS
chunk_body: nodoc this internal class
Revert "use olddoc 1.1.0 for generating NEWS + NEWS.atom.xml"
gemspec: stop advertising "private" email address
doc: design_notes: we do not use EPOLLEXCLUSIVE
README: update with disclaimer about subscription
Ovt punatrf pbzvat...
Please note the disclaimer:
yahns is extremely sensitive to fatal bugs in the apps it hosts. There
is no (and never will be) any built-in "watchdog"-type feature to kill
stuck processes/threads. Each yahns process may be handling thousands
of clients; unexpectedly killing the process will abort _all_ of those
connections. Lives may be lost!
yahns hackers are not responsible for your application/library bugs.
Use an application server which is tolerant of buggy applications
if you cannot be bothered to fix all your fatal bugs.
--
EW
^ permalink raw reply [relevance 3%]
* [PATCH] doc: design_notes: we do not use EPOLLEXCLUSIVE
@ 2017-03-18 0:54 7% Eric Wong
0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2017-03-18 0:54 UTC (permalink / raw)
To: yahns-public
And clarify that we only have one thread by default.
Since EPOLLEXCLUSIVE seems to have gotten some more press, I
guess we should emphasize our design does not rely on it.
---
Documentation/design_notes.txt | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/Documentation/design_notes.txt b/Documentation/design_notes.txt
index 308faa6..68d31bc 100644
--- a/Documentation/design_notes.txt
+++ b/Documentation/design_notes.txt
@@ -17,9 +17,12 @@ socket we have inside the kernel.
Each listen queue has a dedicated thread pool running _blocking_
accept(2) (or accept4(2)) syscall in a loop. We use dedicated threads
and blocking accept to benefit from "wake-one" behavior in the Linux
-kernel. By default, this thread pool only has thread per-process, doing
+kernel. By default, this thread pool only has one thread per-process, doing
nothing but accepting sockets and injecting into to the event queue
-(used by epoll or kqueue).
+(used by epoll or kqueue) so a worker thread pool can pick them up.
+
+This design makes EPOLLEXCLUSIVE in Linux 4.5+ unnecessary to us,
+our listen sockets are never registered with epoll or kqueue.
worker thread pool
------------------
@@ -38,7 +41,7 @@ allows us to guarantee exclusive access to a client socket without
additional locks managed in userspace.
Idle threads will sit performing epoll_wait(2) (or kevent(2))
-indefinitely until a socket is reported as "ready" by the kernel.
+indefinitely until a client socket is reported as "ready" by the kernel.
queue flow
----------
--
EW
^ permalink raw reply related [relevance 7%]
Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2017-03-18 0:54 7% [PATCH] doc: design_notes: we do not use EPOLLEXCLUSIVE Eric Wong
2017-03-23 4:07 3% [ANN] yahns 1.15.0 -_- sleepy app server for Ruby Eric Wong
Code repositories for project(s) associated with this public inbox
https://yhbt.net/yahns.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).