我用 ab 测试 Puma 和 Thin, 用 htop 看着内存不断的涨。但是当服务器空闲下来,内存还是那个状态,只增加不减少。
Passenger 我也测试过,它的模式应该是一个 process 的内存到达一定限制的时候,新开一个 process 出来,当这个 process 空闲的时候,再把它 kill 掉。
不好意思,我又测试了下:
rails server 在之前高并发下分配的内存,并不会释放掉,而是继续留着。 下次如果同样级别的并发情况下,内存基本上不会增加(利用之前分配的内存)。 但是如果并发级别增高的话,又会分配新的内存。
所以我测试 test project 的时候,并发级别不变的情况下,多次测试内存都会稳定在一个值左右。我的实际项目也是。
所以是不是应该根据服务器内存来限制 server 的 connection 数量,免得服务器 down 掉?
ruby 版本是 ruby 2.1.6p336
内存是一个 process 跑到初始的内存是 100 多 M, 如果并发级别是 20 的话,服务器内存就会增加到 600M。。。
我仅仅测试的是首页,只有 7-8 个 sql 查询。。太吃内存了。。
也不清楚是不是 Gem 的问题,我要慢慢查查。