about summary refs log tree commit homepage
path: root/lib
DateCommit message (Collapse)
2011-05-09add XEpollThreadPool concurrency option
This is probably friendlier on server resources in the worst case than XEpollThreadSpawn but may perform worse in the client client-visible way, too.
2011-05-08Revert "epoll: fixes for Ruby 1.9.3dev"
Fixed in kgio 2.4.0 now This reverts commit a1168e7d2bfe182896f139d051ef099616fd1646.
2011-05-08join_threads: simplify thread stoppage check
No need for a string comparison
2011-05-08epoll_wait: flags argument is unused
We only poll for one event (EPOLLIN/EPOLLOUT) at a time, so there's no need to actually check since they're too rare.
2011-05-08xepoll: cleanup acceptor logic
worker_yield is safer than setting a threshold with multiple acceptors when thread limits are hit. Also, avoid sleep + Thread#run since it's potentially racy if threads are extremely unfairly scheduled. Same things applied to xepoll_thread_spawn.
2011-05-08xepoll_thread_spawn: rework acceptor logic
Infinite sleep is too dangerous due to possible race conditions, so use worker_yield which is safer and cheaper in the general case. We can also avoid sleeping on new threads by only spawning when the client module is included.
2011-05-08xepoll_thread_spawn/client: close returns nil
Otherwise pipeline_ready can false positive on us
2011-05-08xepoll_thread_spawn: inline needless method
shorter line and 3 lines of code killed!
2011-05-08process_client: fix pipeline_ready arity
Not that it's actually used, right now.
2011-05-06remove unnecessary variable assignments
2011-05-06ensure some requires get loaded in master
More sharing, faster startups, and most importantly, better error reporting if some things are missing.
2011-05-05http_server: XEpollThreadSpawn sets RLIMIT_NPROC
It *can* have as many threads as it does idle connections.
2011-05-03Rainbows! defaults more DRY
We won't forget to reset defaults on SIGHUP anymore.
2011-05-03s/max_bytes/client_max_body_size/ for consistency
Too confusing otherwise...
2011-05-03add client_header_buffer_size tuning parameter
We're changing our default to 1K buffers to save memory. This should reduce memory usage of idle clients and lower pressure on the MRI GC. Rails applications using session cookies (the default) may want to up this to 2K or more.
2011-05-02rainbows: get rid of MODEL_WORKER_CONNECTIONS constant
Just use regular autoload, now. Less guesswork.
2011-05-02http_server: default all options to 50 connections
pavinging the way for changing MODEL_WORKER_CONNECTIONS
2011-04-30lower header buffer sizes for synchronous models
HTTP headers are usually smaller than 4K, so 16K was way too much for most users and often caused unnecessary GC runs. EventMachine and Coolio models can all share the same initial read buffer, so it's less urgent that they get this lowered for now...
2011-04-30xepoll_thread_spawn: lower memory usage
This one actually has a realistic chance of running hundreds/thousands of clients, and 32K per-client is a huge amount.
2011-04-29epoll: fix timeout
Epoll#wait and epoll_wait(2) timeouts are in milliseconds, not seconds. This affects xepoll, too.
2011-04-29xepoll_thread_spawn: fix race condition with acceptors
Noticed under 1.8.7
2011-04-29xepoll_thread_spawn: initial implementation
Whee! This is going to be awesome.
2011-04-28document epoll and xepoll
They're probably ready for general use in a very limited capacity...
2011-04-26doc: stop recommending Fiber* stuff
Too much NIH and too fragile.
2011-04-26revactor: remove documentation for internal methods
2011-04-26revactor: do not recommend, upstream is dormant
2011-04-26stream_file: hide internals
No need to expose things that don't need exposing.
2011-04-25make all concurrency options use 50 by default
This may change again in the future, but it paves the way for simplifying this code...
2011-04-21thread_timeout: annotate as much as possible
This should make code review easier.
2011-04-21increase RLIMIT_NPROC for thread-crazy folks
Might as well, threads are free and cheap on 64-bit
2011-04-21http_server: attempt to increase RLIMIT_NOFILE
In case people try to do C10K, make life easier for them.
2011-04-21thread_timeout: document Thread.pass usage
Thread-switching sometimes takes too long under YARV, so we force a switch since the watchdog thread is lower-priority.
2011-04-21join_threads: workaround blocking accept() issues
Should be fixed in 1.9.3 and/or future Kgio...
2011-04-19http_server: less hacky loading of concurrency model
Ugh the old way was gross.
2011-04-11epoll: fixes for Ruby 1.9.3dev
2011-04-11thread_timeout: rewrite for safety
This attempts to fix all the danger associated with using Thread#raise. Hopefully I succeeded. Note: this logic _cannot_ be used to fix the timeout.rb module in the Ruby standard library, that one needs to allow nested timeouts (which seems impossible).
2011-04-10thread_pool: get used of dead thread_join method
It's in the JoinThreads module now
2011-03-22queue_pool: switch to ivars to protect internals
2011-03-22thread_pool+thread_spawn: update documentation
They're not bad with slow clients a previously thought.
2011-03-21simplify LISTENERS closing
No need to obfuscate what it's doing
2011-03-20fix various warnings with "check-warnings" target
Run under 1.9.3dev
2011-03-15fiber/io: fix broken call to Kgio.trywrite
Fortunately it's a deprecated class that nobody uses...
2011-03-15Rainbows! 3.2.0 - trying to send files to slow clients v3.2.0
We now use IO#trysendfile in the sendfile 1.1.0 to reduce the cost of generating backtraces for slow clients (from EAGAIN). Nothing new for people not serving static files (but more on the way). Existing "sendfile" gem users must upgrade to 1.1.0 or risk being left without sendfile support at all: http://bogomips.org/rainbows.git/patch?id=cd8a874d
2011-03-10switch from IO#sendfile_nonblock to IO#trysendfile
IO#trysendfile does not raise exceptions for common EAGAIN errors, making it far less expensive to use with the following concurrency models: * Coolio * CoolioFiberSpawn * Revactor * FiberSpawn * FiberPool This requires the new sendfile 1.1.0 RubyGem and removes support for the sendfile 1.0.0. All sendfile users must upgrade or be left without sendfile(2) support. IO#sendfile behaves the same if you're using a multi-threaded concurrency option, but we don't detect nor use it unless IO#trysendfile exists.
2011-02-28use IO#wait instead of IO.select for single readers
It's a simpler interface and avoids allocating an array which is nice.
2011-02-11Rainbows! 3.1.0 - minor updates v3.1.0
Small bug fixes that have been sitting around, not much but it's already been one month since our last release. * Unicorn dependency updated to 3.4.0, so we get IPv6 support and Kgio.autopush support for ":tcp_nopush => true" users. * Optional :pool_size argument is fixed for NeverBlock and CoolioThreadPool users. * Mostly minor internal code cleanups * Sunshowers support removed, it was out-of-date and unmaintained. Cramp remains supported for now. * X-Rainbows-* response headers support removed, nobody used it. There are severalnew features in this release not documented here. Consider any new features not mentioned in these release notes to be subject to removal/renaming in future releases.
2011-02-11reverse_proxy: document as "not ready for production"
Of course some folks believe nothing in Rainbows! is :.
2011-02-07fix optional "use" argument handling
Actually use the Rainbows::O constant for use [ew: rewritten commit message subject] Acked-by: Eric Wong <normalperson@yhbt.net>
2011-02-07doc: rdoc cleanups and fixes
Don't need to document things that aren't ready, yet.
2011-02-06minimize &block usage for yield
No need to allocate a proc every time when we can just yield much more efficiently.