Talks
Speakers
Events
Topics
Contribute
Search
Sign in
Search
Home
Talks
Speakers
Events
Topics
Contribute
Leaderboard
Use
Analytics
Sign in
search talks for
⏎
Suggest modification to this talk
Title
Description
http://rubykaigi.org/2016/presentations/wyhaines.html Ruby has many different web server options, covering a gamut of possible concurrency architectures. We will look at what those concurrency options are, and at what their respective theoretical costs and benefits are. We will then look at a reference ruby web server implementation that can have each of these different concurrency architectures plugged into it, and examine how its performance under load varies with each of those architectures. We'll wrap it all up with a summary of the results, and a look at which Ruby web servers fall into which categories of concurrency architecture. Kirk Haines, @wyhaines I started using Ruby back in the Ruby 1.6 days, and I have used it in my daily professional life ever since. I'm fascinated by issues of application design, distributed architecture, and making hard things easy. I was also the last Ruby 1.8.6 maintainer. For entertainment, I read studies on exercise and nutrition physiology, and I like to run and bicycle long distances. This year will include my first 50k and 50m running races, and at least one 75 mile gravel bike race.
Date
Slides URL
For optimal experience, please provide the URL of the slides. Speakerdeck.com is recommended as it allows us to embed the slides with a player on the site.
Summarized using AI?
If this talk's summary was generated by AI, please check this box. A "Summarized using AI" badge will be displayed in the summary tab to indicate that the summary was generated using AI.
Show "Summarized using AI" badge on summary page
Summary
Markdown supported
The video titled "Web Server Concurrency Architecture" presented by Kirk Haines at RubyKaigi 2016 explores different concurrency architectures available in Ruby web servers. The presentation educates viewers about the theoretical costs and benefits of various concurrency options, and demonstrates these concepts with a reference Ruby web server implementation named Scrawls. Key points discussed in the video include: - **Introduction to Concurrency and Web Servers**: Haines emphasizes the core function of web servers as HTTP handlers and sets the stage for discussing their concurrency options. - **Core Functionality**: A simple Ruby code snippet is provided to illustrate how easy it is to set up a basic web server using the WEBrick library. - **Scrawls Architecture**: Scrawls is introduced as a pluggable web server designed to support multiple concurrency models including single-threaded, multi-threaded, multi-processing, and event-driven architectures. - **Performance Testing**: Haines conducts tests on Scrawls under various concurrency models using Apache Bench, highlighting performance metrics like requests per second. - **Single-Threaded Blocking Server**: Demonstrates the limitations of a single-threaded server with slow responses significantly reducing throughput. - **Multi-Processing Approach**: Discusses the benefits of process handling multiple requests, though it incurs management overhead. Tests reveal high throughput with significant static files. - **Multi-Threading Benefits & Drawbacks**: Shows that while multi-threading can handle requests faster, managing overhead can negatively impact performance for short requests. - **Event-Driven Concurrency**: Introduced as a method to efficiently handle I/O operations, with inherent challenges due to the potential for slow callbacks to block processes. - **Hybrid Models**: Suggests combining event-driven architectures with multi-threading to improve overall performance. - **Survey of Ruby Web Servers**: The presentation concludes with the exploration of popular Ruby web servers and their concurrency architectures, such as WEBrick, Puma, and Unicorn, outlining their respective strengths and strategies. **Conclusions and Takeaways**: - Understanding concurrency in web servers is crucial for optimizing performance. - Each concurrency model has its own advantages and drawbacks that must be considered in the context of specific use cases. - Hybrid approaches can often yield better performance by leveraging the strengths of multiple strategies. - Popular Ruby web servers vary significantly in design, which can impact application performance depending on the architecture used.
Suggest modifications
Cancel