社区编辑申请
注册/登录
Ruby已死——必须关注的内存问题 译文
运维 服务器运维
如果大家使用的是高人气Unicorn Web服务器,那么内存问题可能会更加严重——这是因为Unicorn采用fork机制。在fork过程中,其会对全部父内存内容进行复制(简称CoW)。

   在今天的文章中,我们将探讨如何解决Ruby当中常见的内存使用问题。

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

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

  如何解决?

  一、定期重启您的Ruby

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

  二、安装此 killer:

  调整内存

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

  config/unicorn.rb

  1)worker_processes: 1x 计算核心

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

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

  四)认真考虑GC配置

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

责任编辑:张诚 来源: 51CTO
相关推荐

2022-05-18 23:42:08

网络安全安全分析工具

2022-05-16 13:37:12

Sysrv僵尸网络微软

2022-05-20 14:54:33

数据安全数字化转型企业

2022-05-10 14:11:05

网络安全网络犯罪

2022-05-14 08:05:18

Linux内存管理

2022-04-14 10:10:59

Nginx开源Linux

2022-04-01 10:08:21

SQL 优化MySQL数据库

2022-05-20 14:08:13

Web3元宇宙区块链

2022-05-17 15:51:32

数据中心运维能力基础设施

2022-05-25 10:04:43

Go编程

2022-05-09 11:57:39

云原生实践安全

2022-04-18 18:04:16

锐捷平台

2022-05-25 10:49:02

云存储云计算

2022-04-11 09:30:00

自然语言HMM深度学习

2022-04-28 09:46:20

Nginx文件Linux

2022-04-26 08:00:00

存储UFSeMMC

2022-05-24 08:21:16

数据安全API

2022-02-18 13:12:49

2022-05-12 14:44:38

数据中心IT云计算

2022-05-10 14:11:55

人工智能金融科技机器学习

同话题下的热门内容

手把手教你轻松建立Ftp服务器

编辑推荐

运维工作到底是做什么的?给1到10年运维人的修仙指南Windows下的几种提权方式的粗略汇总推荐 | 10款优秀的SQL Server服务器监控工具9款优秀网络,服务器和应用程序监控工具
我收藏的内容
点赞
收藏

51CTO技术栈公众号