yahns Ruby server user/dev discussion
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [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).