1/05/2007

[筆記] 我觀 Roobin的「在Linux平台上安装和配置Ruby on Rails详解」

Roobin 寫了一篇 在Linux平台上安装和配置Ruby on Rails详解,裡面不只寫到一些基本的程式碼 make 的基本技巧,還提出許多性能上面的議題,實在是一篇好文章,下面有一些我看這篇文章所作的筆記記錄下來。

1. GC Path
Ruby解析器的GC Patch 這段介紹
根据他的评测表明,使用GC Patch并且设置了合适的GC参数之后,Ruby GC次数下降到原来的十分之一,有效的提高了Ruby在高并发情况下的吞吐能力
還有
这里值得一提的是,使用GC Patch和设置相应的参数之后,每个Ruby FCGI进程耗用的驻留内存是原来的两倍,因此除非你的服务器物理内存非常多,否则要慎用,避免Ruby FCGI吃光你的服务器内存。
這裡從來不知道有差,真的是長了智慧,

2. 請多安裝 mysql-ruby
rails发行包中已经自带纯ruby的MySQL数据库适配器,然而对于生产环境来说,我们仍然应该下载安装C版本的数据库适配器,以达到更好的性能。
我也聽說 ruby-mysql 比 mysql-ruby 來得慢。

3. 安裝 MySQL Ruby Patch
Stefan Kaes在这篇博客中提供了MySQL适配器的patch文件,根据他的评测,可以提高数据库访问30%左右的性能,因此建议用户下载使用该patch文件,那么安装过程改为:
tar xzvf mysql-ruby-2.7.3.tar.gz
cd mysql-ruby-2.7.3
patch < ../ mysql-ruby-2.7-less-string-copies-in-each-hash.diff ruby extconf.rb --with-mysql-dir=/opt/mysql5 make && make install

可以試試的 Patch。
4. 啟動 Fastcgi 數量要慎選
一般而言,不需要启动数量很多的FCGI进程,一个FCGI进程类似于一个Java应用服务器,启动10个FCGI类似于启动10个Java应用服务器了。由于Web Server和FCGI请求处理的网络速度差异,以及Web Server需要处理大量静态资源,经验数据表明:10个Web Server并发连接,仅仅需要1个FCGI并发进程。因此10个FCGI进程可以支撑100个Web Server的并发请求了,大约可以达到每天30万PageView。不过如果考虑到峰值并发,可以适当增加FCGI进程数量。
這裡的經驗法則很值得參考。

5. OS 選擇
另外我个人也不建议用ubuntu或者gentoo作Linux Server的OS来跑,作为一个服务器操作系统来说,要求是稳定可靠,硬件,软件,应用的兼容性好。

當然啦,我對於 OS 的選擇沒啥意見啦,這是使用者口味的不同,所以不加評論。我只能說我喜歡用 Ubuntu 來跑 Server,而樂多跑 Gentoo Linux 來跑得蠻穩的。大家都是 Linux ,Kernel 都一樣,使用套件也都差不多,穩不穩定,還有相容度好不好只是管理者功力的問題。

延伸閱讀
  1. Railsbench 官方網站
  2. MySQL-Ruby
  3. Stefan Kaes 提到的 Ruby-MySQL Patch



沒有留言: