We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
RailsConf 2024 - From Request To Response And Everything In Between by Kevin Lesht
Learn how to optimize Ruby on Rails performance for high-traffic applications by configuring multi-threading, managing connection limits, and leveraging request queues, connection pooling, and Ruby's Global VM Lock, with expert insights from Kevin Lesht.
- Multi-threading in Rails: To handle high traffic, Rails can be configured to run multiple threads within a process, allowing multiple requests to be processed concurrently.
- Connection limits: Database connections have limits, and exceeding them can cause requests to error out. It’s essential to consider connection limits when designing a high-traffic application.
- Request queues: Request queues help manage traffic by holding incoming requests until a process becomes available to accept new work.
- Thread limitations: In a Rails process, the Global VM Lock (GDL) limits the number of threads that can run Ruby code at the same time.
- Scaling: To handle increased traffic, Rails applications can be scaled by adding more processes or threads, depending on the specific requirements.
- Connection pooling: Connection pooling allows multiple threads to share database connections, reducing the number of connections needed and improving performance.
- Ruby’s Global VM Lock: Ruby’s GDL limits the number of threads that can run Ruby code at the same time, which can impact performance in high-traffic applications.
- Puma: Puma is a web application server that can be used to manage multiple processes and threads in a Rails application.
- Traffic patterns: Understanding traffic patterns is crucial for designing a high-traffic application. It’s essential to consider factors like request arrival rates, average response times, and connection limits.
- Performance monitoring: Monitoring performance is essential for identifying bottlenecks and optimizing application performance.
-
Ruby’s connection limit: Ruby has a default connection limit, which can be increased by setting the
pool_size
option in the database configuration. - Thread safety: When using multiple threads in a Rails application, it’s essential to ensure thread safety by using thread-safe libraries and avoiding shared state.