我用 ab 测试 Puma 和 Thin, 用 htop 看着内存不断的涨。但是当服务器空闲下来,内存还是那个状态,只增加不减少。
Passenger 我也测试过,它的模式应该是一个 process 的内存到达一定限制的时候,新开一个 process 出来,当这个 process 空闲的时候,再把它 kill 掉。
内存泄露了,检查程序,使用的 Gem
Ruby China 的线上服务连续跑了 6 天,内存一直稳定在 210m 左右一个进程
#1 楼 @huacnlee 请问 Ruby China 在不访问的初始状态每个进程占用大概多少内存,刚开始的时候使用内存应该会稳定上升,到一定程度后稳定下来。还有 ruby 的东西感觉确实很吃内存,unicorn 也是如此...
启动起来 170m, 然后稳定在 210m 左右,这是正常的,因为有运行时的常量创建。 不要感觉,那都是代码的问题。
关注!
#1 楼 @huacnlee
我在本地 rails new 一个新的 project, sqlite 数据库,数据库放入 50 条测试数据。
然后用 ab 测试,内存依然还是只增加不减少。
#5 楼 @tangmonk 什么版本 Ruby, Rails 内存跑到多少了
#6 楼 @huacnlee
不好意思,我又测试了下:
rails server 在之前高并发下分配的内存,并不会释放掉,而是继续留着。 下次如果同样级别的并发情况下,内存基本上不会增加(利用之前分配的内存)。 但是如果并发级别增高的话,又会分配新的内存。
所以我测试 test project 的时候,并发级别不变的情况下,多次测试内存都会稳定在一个值左右。我的实际项目也是。
所以是不是应该根据服务器内存来限制 server 的 connection 数量,免得服务器 down 掉?
#6 楼 @tangmonk
ruby 版本是 ruby 2.1.6p336
内存是一个 process 跑到初始的内存是 100 多 M, 如果并发级别是 20 的话,服务器内存就会增加到 600M。。。
我仅仅测试的是首页,只有 7-8 个 sql 查询。。太吃内存了。。
也不清楚是不是 Gem 的问题,我要慢慢查查。
刚刚学习了,如下几篇文章,是否可以对比测试下 Ruby 2.2.x 的版本。
Ruby GC 相关文章
其它
#9 楼 @douxiance
谢谢:D
找到原因了,我用 rails 来 server static file 的原因。。