看好像最早都用 passager,后来 thin 和 rainbow 逐渐多了起来,再后来是 unicorn 和 puma………
刚做了个小测试。unicorn 和 puma 分别以生产模式跑同一个程序,另一台服务器简单的用
1000000.times {|i| `curl 页面地址`; puts i }
不断请求页面。服务端 htop 实时监控,munin 和 mrtg 长时间检测数据。
puma 是 4:16 的集群模式跑的,unicorn 是 3 个 workers 跑的。 从日志看每秒服务器收到平均 32 个请求。
结果 puma 测试现在跑到 27w 次请求了…内存比低负载的时候只涨了 400mb,而 unicion 跑了 800 次请求就不敢跑了,每秒 10mb 内存消耗往上涨,涨到内存满了开始刷 swap 了速度还不减,停止请求后内存使用小降了一点就没变化了………
用 ab 进行测试,并发 1000、1w 次为一轮,Unicorn 从第三轮开始丢包,第六轮开始 ssh 访问就断了……两分钟后 dns 提升宕机,停止请求后监控进程也全线崩溃…因为内存超了…… Puma 从在七轮开始丢包,第十三轮开始正常。1000 并发请求了几个小时,内存增加了不到 300mb,服务器各项都稳定,算是扛住了……
改天试试看 thin 跑四个 socket 和 puma 单跑四个 sigle 模式交给 nginx 负载均衡会怎么样……