Kino is an open-source Rack 3 web server for Ruby 4.0+ that uses a Rust front end built on Tokio and Hyper to manage networking and dispatch requests to Ruby workers. In Ractor mode, it runs Ractor-shareable Rack applications across CPU cores in a single process; in threaded mode, it supports any Rack application, including Rails, but Ruby’s Global VM Lock serializes CPU-bound Ruby execution. The server includes graceful draining, worker crash respawning, bounded queues that return 503 responses under pressure, request timeouts, TLS through rustls, access and application logging, and monitoring endpoints. Benchmarks on an AWS c7a.2xlarge server with eight AMD EPYC cores, Ruby 4.0.5, and YJIT showed Kino Ractor mode serving 77,999 CPU-bound fib requests per second, versus 58,006 for an eight-worker Puma cluster. The Ractor benchmark application used 148 MB proportional set size, compared with 1,068 MB for Puma’s cluster. Kino’s threaded Rails hello-world configuration used 92 MB versus Puma’s 389 MB, but handled 2,637 requests per second compared with Puma’s 12,138 because Puma used eight processes across all cores. Ractors remain officially experimental in Ruby 4.0, and Rails is not currently Ractor-shareable. Kino’s kino --check command identifies objects and captured state that prevent an app from using Ractor mode.
github.com
17 min
4h ago
Kino is an open-source Rack 3 web server for Ruby 4.0+ that uses a Rust front end built on Tokio and Hyper to manage networking and dispatch requests to Ruby workers. In Ractor mode, it runs Ractor-shareable Rack applications across CPU cores in a single process; in threaded mode, it supports any Rack application, including Rails, but Ruby’s Global VM Lock serializes CPU-bound Ruby execution. The server includes graceful draining, worker crash respawning, bounded queues that return 503 responses under pressure, request timeouts, TLS through rustls, access and application logging, and monitoring endpoints. Benchmarks on an AWS c7a.2xlarge server with eight AMD EPYC cores, Ruby 4.0.5, and YJIT showed Kino Ractor mode serving 77,999 CPU-bound fib requests per second, versus 58,006 for an eight-worker Puma cluster. The Ractor benchmark application used 148 MB proportional set size, compared with 1,068 MB for Puma’s cluster. Kino’s threaded Rails hello-world configuration used 92 MB versus Puma’s 389 MB, but handled 2,637 requests per second compared with Puma’s 12,138 because Puma used eight processes across all cores. Ractors remain officially experimental in Ruby 4.0, and Rails is not currently Ractor-shareable. Kino’s kino --check command identifies objects and captured state that prevent an app from using Ractor mode.
github.com
17 min
4h ago
Kino is an open-source Rack 3 web server for Ruby 4.0+ that uses a Rust front end built on Tokio and Hyper to manage networking and dispatch requests to Ruby workers. In Ractor mode, it runs Ractor-shareable Rack applications across CPU cores in a single process; in threaded mode, it supports any Rack application, including Rails, but Ruby’s Global VM Lock serializes CPU-bound Ruby execution. The server includes graceful draining, worker crash respawning, bounded queues that return 503 responses under pressure, request timeouts, TLS through rustls, access and application logging, and monitoring endpoints. Benchmarks on an AWS c7a.2xlarge server with eight AMD EPYC cores, Ruby 4.0.5, and YJIT showed Kino Ractor mode serving 77,999 CPU-bound fib requests per second, versus 58,006 for an eight-worker Puma cluster. The Ractor benchmark application used 148 MB proportional set size, compared with 1,068 MB for Puma’s cluster. Kino’s threaded Rails hello-world configuration used 92 MB versus Puma’s 389 MB, but handled 2,637 requests per second compared with Puma’s 12,138 because Puma used eight processes across all cores. Ractors remain officially experimental in Ruby 4.0, and Rails is not currently Ractor-shareable. Kino’s kino --check command identifies objects and captured state that prevent an app from using Ractor mode.
github.com
17 min
4h ago
No more articles to load