about summary refs log tree commit homepage
path: root/lib
DateCommit message (Collapse)
2011-05-16doc: cleanup rdoc for Rainbows module
The only supported method is Rainbows.sleep in here
2011-05-16use :pool_size for RLIMIT_NPROC with thread pool models
Only needed for Ruby 1.9
2011-05-16more reliable shutdown for epoll concurrency models
Just close the epoll descriptor, since the sleepy_penguin epoll_wait wrapper may not return EINTR in the future.
2011-05-16add "copy_stream" config directive
This allows using IO::Splice.copy_stream from the "io_splice" RubyGem on recent Linux systems. This also allows users to disable copy_stream usage entirely and use traditional response_body.each calls which are compatible with all Rack servers (to workaround bugs in IO.copy_stream under 1.9.2-p180).
2011-05-10configurator: update user-facing documentation
Finally, we have all methods in configurator and it's much easier to document!
2011-05-10max_body: documentation updates
It can't be used as middleware for fully-buffering concurrency models.
2011-05-10configurator: move validation logic over
There's actually no reason we can't have these methods in Rainbows::Configurator where it's easier to document nowadays.
2011-05-09doc: better document :pool_size options
CoolioThreadPool has had it supported forever, but only NeverBlock had it documented.
2011-05-09xepoll_thread_*: add rdoc for users
It's good to describe what they're useful for.
2011-05-09xepoll_thread_spawn/client: remove rdoc
It's an internal implementation detail.
2011-05-09max_body: rdoc updates
speling ficks and less confusing #initialize documentation
2011-05-09xepoll_thread_pool: add optional :pool_size argument
We're now able to configure the number of threads independently of worker_connections.
2011-05-09split out pool_size module
coolio_thread_pool, neverblock both use it, and xepoll_thread_pool will support it next, too.
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