惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
罗磊的独立博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Last Week in AI
Last Week in AI
云风的 BLOG
云风的 BLOG
T
The Blog of Author Tim Ferriss
Y
Y Combinator Blog
A
About on SuperTechFans
WordPress大学
WordPress大学
B
Blog
Martin Fowler
Martin Fowler
Jina AI
Jina AI
I
InfoQ
P
Proofpoint News Feed
小众软件
小众软件
S
SegmentFault 最新的问题
V
V2EX
B
Blog RSS Feed
量子位
大猫的无限游戏
大猫的无限游戏
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
MongoDB | Blog
MongoDB | Blog
美团技术团队

Datadog | The Monitor blog

Introducing our open source AI-native SAST Instrument and monitor Boomi integration flows with OpenTelemetry and Datadog Not all index scans are equal: How we cut query latency by over 99% Platform engineering metrics: What to measure and what to ignore Integrate Recorded Future threat intelligence with Datadog Cloud SIEM CI/CD security: threat modeling using a MITRE-style threat matrix CI/CD security: How to secure your GitHub ecosystem Ingress NGINX is EOL: A practical guide for migrating to Kubernetes Gateway API Operating agentic AI with Amazon Bedrock AgentCore and Datadog LLM Observability: Lessons from NTT DATA Introducing the Datadog Code Security MCP Capture and analyze custom heatmaps in Session Replay Understand session replays faster with AI summaries and smart chapters Monitor ClickHouse query performance with Datadog Database Monitoring How we designed empathetic alert sounds for on-call engineers Search and act across Datadog to resolve issues faster with Bits Assistant Measure the business impact of every product change with Datadog Experiments Analyzing round trip query latency Configuring JavaScript caches for better performance Introducing Bits AI Dev Agent for Code Security Datadog achieves ISO 42001 certification for responsible AI Monitor Nutanix clusters, hosts, and VMs with Datadog Monitor Juniper Mist in Datadog A new Host Map for modern infrastructure Annotate traces to improve LLM quality with Datadog LLM Observability What’s new in Cloud SIEM: AI-powered investigations, enhanced threat intelligence, and scalable security operations Explore Kubernetes with native OpenTelemetry data Monitor Oracle Fusion Cloud Applications with Datadog Announcing the Datadog Terraform provider v4.0.0 Scaling Kubernetes workloads on custom metrics How to design cloud environments for AI-powered threat analysis
Optimizing Ruby performance: Observations from thousands ...
2025-11-18 · via Datadog | The Monitor blog

Over the past three decades, Ruby has assumed a pivotal role in the modern web stack and become a fixture in the tool kits of countless DevOps and platform teams. Today, it is a driving force in contemporary application development, testing, automation, and CI/CD.

For this blog post, we used data from our always-on continuous profiling of more than 3,000 real-world services from hundreds of organizations to track trends in Ruby usage and performance. This data sheds light on important considerations for Ruby development and points to opportunities for performance optimization that many organizations are leaving on the table.

Choice of libraries is key to optimizing Ruby performance

Ruby has a thriving ecosystem of libraries. On average, according to our findings, Ruby applications spend 82% of their CPU time in library code. This means that choosing the right libraries and using them efficiently should be top priorities for optimizing Ruby application performance.

It’s worth emphasizing here that Ruby tends to be relatively compute-intensive. Our data backs up other findings that Ruby applications are generally less I/O-heavy, spending as much or more time on CPU as they do waiting on other services or database requests.

Share of Rails services by proportion of request time spent on CPU.

Overall, we found that more than a quarter of all Ruby-driven CPU consumption comes from a small handful of libraries: On average, stdlib accounts for 14.8%, activerecord for 9.8%, and activesupport for 8.1%.

Average share of Ruby service's CPU usage by top libraries.

Many of these top contributors to CPU usage lack viable substitutes. However, we found that some of the most widely used Ruby libraries can be replaced by others for substantial performance gains. For example, among database drivers, mysql2 is far more widely used than trilogy—even though it is also far more CPU-intensive.

Adoption and median CPU usage by Ruby database driver.

In other areas, we found that trends in library usage are on the right track. For example:

  • pg is the clear favorite PostgreSQL client library for Ruby, as well as the least resource-intensive.
  • For JSON serialization, modern versions (2.7.3 and up) of json lead the pack in terms of both popularity and performance, though the also-popular oj is comparably performant.

Elsewhere, library selection has less of an impact on performance. For example, our data shows that web server choice is not a major differentiator for Ruby CPU consumption, which is generally comparable among a wealth of performant options. (Of course, when assessing the performance of web servers, CPU usage is not the only factor to consider: It’s also important to consider metrics like latency, memory usage, and fault tolerance. We’re still collecting data for those metrics and look forward to sharing our findings soon.)

Median CPU usage among popular Ruby web server and background processor libraries.

Among Ruby HTTP clients, where usage is highly fragmented, we observed no clear differentiators in terms of overhead. Median CPU consumption was under 0.1% across all popular libraries, including wrapper libraries.

Adoption and median CPU usage by Ruby HTTP client or wrapper library.

Better performance is often just a Ruby version away

We measured significantly lower library CPU usage for services on Ruby 3 compared to those on Ruby 2—a clear indicator that migrating to the newest version (and enabling YJIT!) may be a major boon to performance.

Median CPU usage by major Ruby runtime version.

Ruby 4.0 is expected to bring substantial performance improvements for certain workload types, and we look forward to tracking the impact of these improvements, such as ZJIT, in future editions of this survey. For example, in our profiling of Ruby 3.4.x and below, set ranked among the most CPU-intensive libraries. With Set now implemented as a core class in Ruby 4.0, teams with set-heavy workloads should consider migrating as soon as possible.

In other areas, migrating to newer versions of Ruby may not bring leaps in performance. For example, we were surprised to find that upgrading Ruby versions alone won’t bring down your CPU overhead from garbage collection: Across versions, the average proportion of CPU that Ruby applications spend on garbage collection wavers between 9.4% and 16.3%.

Share of CPU usage spent on garbage collection by Ruby runtime version.

We have a separate blog post all about optimizing Ruby garbage collection.

Takeaways on optimizing Ruby performance

In this post, we’ve outlined the major opportunities for Ruby performance optimization identified through our continuous profiling of thousands of real-world Ruby services. We’ve demonstrated the compute-intensiveness of Ruby apps, emphasized the importance of careful library selection, and shown how the most popular libraries may not always be the most performant. Finally, we’ve shown the potential performance benefits of migrating from Ruby 2 to Ruby 3 and highlighted the promising outlook for Ruby 4.0.

To dive deeper, you can learn more about monitoring Ruby and Datadog Continuous Profiler. And if you’re new to Datadog, you can sign up for a 14-day free trial.