Ruby语言当中最为常见的就是内存使用问题,这一点在其它基于JVM的语言中亦颇为普遍(是的,Java,说的就是你)。事实上,Ruby的垃圾回收(简称GC)机制与Java非常接近。如果使用不当,其会带来巨大的麻烦(正如下图所示)。在这类情况下,GC会停止运作,同时消耗服务器的整体CPU资源,甚至导致服务器重启。

wKiom1fSEH_C_dEsAABMJWuitok809

Unicorn与Ruby内存泄露导致服务器宕机。

如何解决?

一、定期重启您的Ruby

如果大家使用的是高人气Unicorn Web服务器,那么内存问题可能会更加严重——这是因为Unicorn采用fork机制。在fork过程中,其会对全部父内存内容进行复制(简称CoW)。因此,大家可能需要使用“Unicorn Worker Killer” gem以监控服务器并在内存达到新高点或者请求数量增加至一定水平时进行重启。由于该gem支持随机化,因此服务器本身很可能并不会受到影响。

二、安装此 killer:

wKioL1fSEKLzuR30AACWoEbmru0624

三、调整内存

如果大家使用的是Ruby 2.X版本,则可通过配置Unicorn更好地使用CoW机制。config/unicorn.rb

1)worker_processes: 1x 计算核心

2)timeout: 工作请求超时,应设定在15到30秒区间

3)preload_app: 启用CoW,但要求在fork上管理连接/断开

四、认真考虑GC配置

总结:动态语言存在着一定短板,然而正确的设计却能帮助其始终在线且顺畅运行。

关注中国IDC圈官方微信:idc-quan 我们将定期推送IDC产业最新资讯

查看心情排行你看到此篇文章的感受是:


  • 支持

  • 高兴

  • 震惊

  • 愤怒

  • 无聊

  • 无奈

  • 谎言

  • 枪稿

  • 不解

  • 标题党
1000P 济南人工智能算力中心正式投入运营
2025-03-13 09:44:00
3000P,中国联通长三角(合肥)智算中心项目开工
2025-03-12 10:55:00
“星际之门”重要进展:即将安装6.4万张GB200
2025-03-12 10:43:07
奥飞数据拟定增募资不超过17.5亿元 用于廊坊数据中心建设
2025-03-12 10:34:00
智算中心还是不够——两会热议AI,落点还在算力
2025-03-12 10:22:00
万国数据成功发行首单数据中心持有型不动产ABS, 开拓数字基建资产证券化新航道
2025-03-11 09:49:49
2025【数据中心“她”力量】特别专题:兹戈图(中国)亚太区副总裁魏娟娟
2025-03-07 20:12:45
2025【数据中心“她”力量】特别专题:莲花紫星副总经理刘晶晶
2025-03-07 20:10:41
2025【数据中心“她”力量】特别专题:朝亚市场总监徐赞赞
2025-03-07 20:07:33
2025【数据中心“她”力量】特别专题:北方算网CFO王倩
2025-03-07 20:05:33
2025【数据中心“她”力量】特别专题:博浩数据人力资源部总监巫雯静
2025-03-07 20:04:00
2025【数据中心“她”力量】特别专题:新意网大中华区业务拓展副总裁Coco Cheng
2025-03-07 20:00:27
2025【数据中心“她”力量】特别专题:ABB电气中国配电系统数字化及解决方案业务负责人蒋英
2025-03-07 20:00:00
2025【数据中心“她”力量】特别专题:中国电子工程设计院数据中心事业部 运营中心总监牛悦
2025-03-07 19:57:48
2025【数据中心“她”力量】特别专题:Akamai大中华区市场总监付芊芊
2025-03-07 19:54:00