Ruby作为服务器端应用已经成熟了

JavaEye网站在过去的Ruby on rails实践当中,曾经被Ruby的内存泄露问题深深的困扰过,并且自己编写了监控Ruby进程泄露的监控脚本来解决这个问题。造成Ruby内存管理不善的原因主要来自于两个方面:

一是Ruby GC的实现本身存在很多问题,关于这一点,以前已经多次讨论,随着MBARI内存补丁的发布,已经基本解决。特别是随着[url=http://www.rubyenterpriseedition.com/]Ruby Enterprise Edition[/url]集成MBARI补丁,以及不断完善Ruby实现,已经让Ruby可以作为一个稳定的后台服务的实现了。

二是一些内存处理有问题的Ruby本地扩展库造成的内存泄露,这种情况就必须尽量避免使用第三方库,即使要用,也要保证它的稳定性。比方说JavaEye最早使用RMagic处理图片,之后改成了mini_magick,JavaEye曾经一直使用hpricot来处理html tag和博客导入,也经常造成内存泄露,最近把hpricot全部替换成nokogiri以后解决了内存泄露。

在这里特别值得一提的是REE([url=http://www.rubyenterpriseedition.com/]Ruby Enterprise Edition[/url]),随着REE1.8.7版本发布,REE不但可以提供ruby稳定的内存使用,而且经过GC参数的调整,可以最大化ruby服务端处理性能,非常值得推荐使用。

JavaEye网站在去掉hpricot,使用最新版本REE之后,内存泄露问题已经彻底消失。目前JavaEye网站使用的是rails2.3.4版本,fastcgi进程启动以后使用了230MB内存,经过一段时间运行之后,可以稳定在210MB长期运行,性能也相当不俗。

因此现在可以认为,Ruby作为服务器端应用已经到了成熟期了,完全可以放心在大型应用系统当中使用了,特别是Ruby也可以用来作为一个不需要高性能处理的long-term后台服务了。

最后简单说说REE的安装:

1、下载:http://www.rubyenterpriseedition.com/download.html

2、REE提供了编译好的二进制版本,不过我喜欢自己编译,编译的步骤可以看文档:[url=http://www.rubyenterpriseedition.com/documentation.html#_manual_installation_for_experts]REE Documentation[/url]

3、编译和标准Ruby是一样的,但是REE提供了Google tcmalloc库,可以提高Ruby分配内存的效率,编译tcmalloc稍稍麻烦一点:

cd ruby-enterprise-x.x.x/source/distro/google-perftools-*
./configure --prefix=/usr/local --disable-dependency-tracking
make libtcmalloc_minimal.la

rm -f /usr/local/lib/libtcmalloc_minimal*.so*
cp -Rpf .libs/libtcmalloc_minimal*.so* /usr/local/lib/

编译ruby的时候修改Makefile文件,寻找 LIBS,添加$(PRELIBS)

LIBS = $(PRELIBS) -ldl -lcrypt -lm $(EXTLIBS)

make PRELIBS="-Wl,-rpath,/usr/local/lib -L/usr/local/lib -ltcmalloc_minimal"


然后检测一下是否链接了tcmalloc库:
ldd ruby
应该可以找到如下信息:
libtcmalloc_minimal.so.0 => /usr/local/lib/libtcmalloc_minimal.so.0 (0x00002b748b51c000)
服务器端JSON处理:ASP.NET、PHP与Ruby on Rails 本章介绍了JSON在服务器端编程语言中的处理方式,包括ASP.NET、PHP和Ruby on Rails等框架对JSON的支持。通过实例展示了如何在这些语言中序列化和反序列化JSON对象,以及如何通过HTTP请求获取JSON资源。 阅读详情

相关推荐

Cantus Firmus: 结合Ruby、Sinatra与Javascript的音乐理论工具

本文还有配套的精品资源,点击获取 简介:"cantusfirmus"是一个基于Ruby和Sinatra框架的Web应用,旨在为音乐理论爱好者和数据分析师提供一个用于生成和研究Cantus Firmus的工具。Cantus Firmus是一种在中世纪音乐中常见的基础旋律线。Ruby语言用于服务器端逻辑和数据库交互,Sinatra框架用于构建Web服务,而JavaScript则...

weixin_32747681的博客 1234

为什么Minimax_h3_latent_Upscaler比像素域超分快得多?潜空间视频放大原理解密

**Minimax_h3_latent_Upscaler** 是面向 Minimax H3 视频生成的**潜空间放大器(Latent Upscaler)**:它直接作用在 H3 的 24 通道 VAE latent 上,在保持时间维度的前提下提升空间分辨率(H×W)。与传统"解码回像素域再放大"的做法不同,它跳过了约 5B 参数重型 VAE 的 decode → 像素域放大 → encode 往返

gitblog_00647的博客 999

嵌入式开发也玩“全家桶”?手把手教你用CLion+PyOCD调试APM32,比OpenOCD更简单

本文详细介绍了如何使用CLion和PyOCD组合进行APM32嵌入式开发,提供从环境配置到实战调试的完整指南。相比传统工具如Keil和OpenOCD,这套方案更轻量、易用,特别适合现代开发者需求,涵盖CMake配置、PyOCD调试技巧及常见问题解决。

weixin_42543046的博客 463

Ruby语言服务器实现项目推荐

Ruby语言服务器实现项目推荐 项目基础介绍和主要编程语言 该项目名为language_server-ruby,是一个Ruby语言服务器的实现。Ruby是一种动态、开源的编程语言,以其简洁性和生产力著称。该项目旨在为Ruby开发者提供一个强大的语言服务器,以提升开发效率和代码质量。 项目核心功能 language_server-ruby项目的主要功能包括: 代码补全:提供智能的代码补全功能,帮助...

gitblog_00919的博客 375

Wider Face+YOLOV7人脸检测

使用Wider Face数据集训练YOLOV7

chen_znn的博客 8406

京东联盟h5st(3.1)加密参数逆向实战与反爬对抗策略

本文详细解析了京东联盟h5st(3.1)加密参数的逆向分析与实战破解过程。通过接口分析定位关键加密函数,拆解h5st结构并还原其基于SHA256和HMAC-SHA256的加密逻辑,最终使用Python集成JavaScript环境成功复现加密算法,并分享了应对反爬的频率限制、IP封禁及算法升级等对抗策略。

weixin_29246195的博客 1738

如何在Ruby中编写微服务?

本文作者为 Pierpaolo Frasa,文章通过详细的案例,介绍了在Ruby中编写微服务时所需注意的方方面面。系国内 ITOM 管理平台 OneAPM 编译呈现。

wangpeng198688的专栏 4721

六轴机器人正解

采用的是John H.Craig在【机器人学导论】中的改进DH模型 1.六轴坐标系 2.DH参数 i αi−1\alpha_{i-1}αi−1​ ai−1a_{i-1}ai−1​ did_idi​ θi\theta_iθi​初值 1 0 0 0 0 2 -90 a1a_1a1​ 0 -90 3 0 a2a_2a2​ 0 -90 4 -90 a3a_3a3​ d4d...

m0_37581770的博客 2511

Ruby语言服务器实现教程

Ruby语言服务器实现教程 1. 项目介绍 language_server-ruby 是一个 Ruby 语言服务器的实现,旨在为 Ruby 开发者提供丰富的编辑器功能。该项目遵循 Language Server Protocol (LSP),使得开发者可以在不同的编辑器中享受到一致的开发体验。language_server-ruby 支持通过标准输入输出(stdio)进行通信,适用于多种开发环境。...

gitblog_00403的博客 552

洛谷P5707 【深基2.例12】上学迟到(c语言)

第一篇题解 题目描述 yyy 的学校要求早上 8 点前到达。学校到 yyy 的家一共有 s(s\le 10000)s(s≤10000) 米,而 yyy 可以以 v(v<10000)v(v<10000) 米每分钟的速度匀速走到学校。此外在上学路上它还要额外花 10 分钟时间进行垃圾分类。请问为了避免迟到 yyy 最晚什么时候出门?输出 HH:MM 的时间格式,不足两位时补零。由于路途遥远, yyy 可能不得不提前一天出发,不过不可能提前超过一天。 输入格式 两个正整数 s,v,意思已经在题目中给定

cc_love_program的博客 1万+

802.1AS时间同步机制深度解析:从Sync报文到多域冗余设计

本文深度解析了802.1AS时间同步机制,从Sync与Follow_Up报文的核心交互原理入手,详细阐述了其如何通过精确的时钟频率比测量、链路延迟计算和驻留时间补偿来实现微秒乃至纳秒级同步。文章进一步探讨了802.1AS-2020版本引入的多时钟域冗余设计,为构建高可靠的车载TSN网络提供了关键见解和实战配置指南。

pytorch8learner的博客 460

Ruby语言的Web开发

Ruby是一种动态、开放源代码的编程语言,由日本计算机科学家松本行弘于1995年创建。Ruby旨在使程序员的工作更加高效和愉悦。其语法简单明了,具有强大的表达能力,使得开发过程更加流畅。高效性:Ruby的设计理念是“简单是最复杂的”,这使得代码更加简洁,并提高了开发效率。面向对象:Ruby的一切都是对象,包括基本数据类型,这使得Ruby具备了强大的面向对象编程能力。动态类型:Ruby是一种动态类型语言,允许开发者在运行时改变变量的类型,从而提升灵活性。丰富的库支持。

2501_90485632的博客 396

【报错解决】OpenClaw 报错 `openclaw: command not found`:全局命令未加入系统 PATH 的深度排查与修复指南

在国产AI工具链开发中,OpenClaw作为关键命令行工具常出现command not found报错。本文深度分析该问题的根源——Linux环境变量PATH未包含用户级安装目录(~/.local/bin)。通过四种解决方案(临时PATH修改、永久配置、软链接、虚拟环境处理)和排错Checklist,揭示"命令存在却找不到"的本质是路径配置问题,特别适用于Docker/国产Linux/非root环境。文中强调理解Linux工具链机制对国产AI开发的重要性,并指出这是开发者掌握环境

博客 5382

Mayu Live:基于Ruby的实时更新服务器端组件框架

Mayu Live:基于Ruby的实时更新服务器端组件框架 项目介绍 Mayu Live是一个基于Ruby的实时更新服务器端组件框架,专注于虚拟DOM渲染。与传统的客户端渲染框架不同,Mayu Live将所有渲染逻辑和状态管理都放在服务器端,客户端仅负责接收更新并应用到DOM上。这种设计不仅减少了客户端的负担,还使得开发者可以更专注于业务逻辑的实现,而不必过多关注前端性能优化。 项目技术分析 10...

gitblog_00382的博客 440

半导体工艺仿真:离子注入工艺仿真_(8).损伤和缺陷仿真

离子注入工艺在半导体制造中是一个重要的步骤,用于在半导体材料中引入特定的掺杂剂。然而,离子注入过程中不可避免地会产生损伤和缺陷,这些损伤和缺陷会直接影响器件的性能和可靠性。因此,对离子注入工艺中的损伤和缺陷进行仿真研究是必不可少的。本节将详细介绍如何使用仿真软件对离子注入过程中的损伤和缺陷进行建模和分析。

2401_87715305的博客 1339

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Ruby基本介绍

Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。Ruby 可运行于多种平台,如 Windows、MAC OS 和 UNIX 的各种版本。 Ruby is… A dynamic, open source programming language with a focus on simplicity and productivity. .

Cupido 9734

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Opal与Node.js:如何在服务器端运行Ruby代码的完整指南

Opal是一个强大的Ruby到JavaScript的源到源编译器,它让开发者能够在Node.js环境中无缝运行Ruby代码。通过Opal,你可以将熟悉的Ruby语法带入服务器端JavaScript世界,享受Ruby的优雅与JavaScript的灵活性的完美结合。💎 ## 为什么选择Opal在Node.js中运行Ruby? Opal的核心价值在于它能够将Ruby代码编译为高效的JavaScri

gitblog_00355的博客 693

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ruby on rails_Ruby on Rails解释

ruby on railsRuby on Rails is a server-side framework (gem) built on the Ruby language to make websites. It includes everything you need to build web applications and has a big community. Ruby on Rail...

636

WebSocket服务器端解决方案

虽然还是菜鸟,但也希望能做点贡献,所以今天把自己工作中总结的一点东西写下来,希望对朋友们有所帮助。 WebSocket服务器端解决方案:        目前支持WebSocket的服务器只有Jetty 7(开源免费)和 kaazing Gateway (付费)。但已经有许

8707

Ruby SAML Identity Provider 使用教程

Ruby SAML Identity Provider 使用教程 项目介绍 saml_idp 是一个用于实现 SAML 认证服务器端的 Ruby 库,特别适用于 Rails 应用(但并非必须)。该库允许你的应用作为 SAML v2.0 协议的 Identity Provider (IdP),处理来自 Service Providers (SPs) 的认证请求和确认响应。 项目快速启动 安装 首先,...

gitblog_00332的博客 875

ruby.wasm性能优化指南:让WebAssembly Ruby应用运行速度提升3倍

ruby.wasm是CRuby的WebAssembly移植集合,它将Ruby的强大功能带到了Web平台。本文将分享6个实用的性能优化技巧,帮助你将WebAssembly Ruby应用的运行速度提升3倍,让你的Ruby程序在浏览器和服务器端都能高效运行。 ## 1. 选择合适的WebAssembly后端架构 ruby.wasm提供了多种WebAssembly后端支持,包括Emscripten和W

gitblog_00327的博客 1083

Ruby 简介

Ruby是一种纯粹的面向对象编程语言。它由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)创建于1993年。 您可以在 www.ruby-lang.org 的 Ruby 邮件列表上找到松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)的名字。在 Ruby 社区,松本也被称为马茨(Matz)。 Ruby 是"程序员的最佳朋友"。 Ruby 的特性与 Small...

izizi_cn的博客 243

Ruby on Rails开发Web应用的基本概念

Web应用架构 C/S架构 Web应用从最初就采用C/S架构。Server负责监听客户端请求,提供资源,Client向server发起请求并渲染页面。两者通过TCP/IP协议栈之上的HTTP协议通信。 多层架构 在Web 2.0时代,随着交互性的要求,这个架构变得更为复杂。Server需要提供更复杂的服务,Client也要完成更多的交互任务,涌现出很多新的提供更快更好服务的技术。相应的,C/S架构需要以一种更复杂的方式来组织,即多层架构。 多层架构中的每一层负责提供一个特定的功能,与其他层通过良好的

Focustc 6979

Ruby学习笔记(1)

是一个完美的面向对象语言。使用 Ruby 的语法比使用 Smalltalk 的语法要容易得多。

Donics的博客 1866

Airbnb的Hypernova Ruby客户端指南

Airbnb的Hypernova Ruby客户端指南 一、项目介绍 Hypernova Ruby客户端是Airbnb推出的一个用于集成Hypernova服务的Ruby库。Hypernova是一个服务器端渲染(SSR)解决方案,旨在异步处理React组件的渲染,从而提高网站性能。此客户端使得在Ruby应用中利用Hypernova服务变得更加便捷,特别适用于那些希望实现在服务器上预渲染前端React组...

gitblog_00097的博客 834
上一篇: 基于资源的HTTP Cache的实现介绍
下一篇: 做互联网产品的节奏感
robbin
博客等级 码龄26年 12粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值