[筆記] 也許是對於 server 的最佳化
有人建議我可以 po 一些技術類的文章,所以來吧。
最近幾天針對伺服器軟體做了一些最佳化 (謎: 你不是期中考嗎?),不知道眾鄉民有沒有覺得最近一、兩天網站的速度變快了?我是覺得有變快。包括也改了一些程式,因此寫一點筆記。有興趣寫 Ruby on Rails 程式的可以參考參考。
ksk 的利器? mod_rails
網站運作速度變快,主要我覺得是因為我改用「號稱」極速的 mod_rails (Phusion Passenger) 這個專門為 Ruby on Rails 量身打造的 Apache 2 Module ,取代了原本一次開十隻 cluster 的 mongrel_rails 。
差別在於,之前是把十隻 cluster 一次全部開起來放在記憶體裡面當 daemons ,然後透過 mod_proxy 設定 proxy balancer 使 apache 可以調配 client 用戶該使用哪一個 daemon 來應對(詳細方法可以參考我去年寫的這篇文章)。而現在有了 mod_rails,直接讓 Phusion Passenger 去控制要有多少個 processes 開在記憶體中,甚至是有連線進來才啟動 rails,沒連線就統統關掉,有點像是 mod_php5 。
實作方法很簡單,照著這篇文章做就 ok 了,或是看官方的二行文教學也行 (真的只有 2 行指令就裝完了,當然改設定那些另當別論)。裝完之後把 apache2 重新啟動,記得先關掉原有的 mongrel_rails cluster 就是了。其實還真的有一種「Ruby on Rails 終於脫離 CGI 的影子了」的感覺,「檔案放上去就可以動了,不用開 ./script/server」。
所以我現在要暫時關站做 rake db:migrate 之類的事,還得先要把 #{RAILS_ROOT}/public 這個資料夾更名,假裝是關站 囧
進化到 rails 2.0.2、改用 will_paginate
一時興起把 config/environment.rb 裡面的 rails 版本換成 2.0.2 了,不知道 rails 2 是不是真的有讓 ruby on rails 變快?
可是因為這個換版本的動作,原本針對高中榜單做的分頁 (pagination) 竟然爛掉了。當初是抄這篇文章的方式去做的,那時候還在 rails 1.x 。結果換到 rails 2.0,似乎是 Paginate 這個 Class 不見了 (還是我找錯 namespace?)。
正在不知道該從何改起的時候,讓我找到了 will_paginate 這個東西,也不需要像之前那以自己寫(貼?) Class Methods 了,就直接引用他內建的東西即可。
先看 Installation 這篇文章,把 will_paginate 裝進系統,並載入你的 Ruby on Rails 專案,然後照這篇 Usage examples 做就行了。用的程式碼比之前少很多,也可以透過 css 去裝飾你 render 出來的分頁列長怎樣。
—
以上其實我不知道是不是真的有對 server 做到某種程度上的最佳化,因為同時我還把姓名查榜關掉了,光這個就可以省下很多資源。也許過幾天又把姓名查榜開起來,才會知道 mod_rails 到底有多大能耐吧。
—
ksk = 加速,日本 2ch 鄉民語。



是真的變快了喔^^
快很多
都不會LAG了
路人甲
2008 年 四月 21 日 星期一 at 9:27 am
好厲害!你真的好厲害好厲害喔!!
真的有變快!
而且這個網站這麼棒,竟然不用收錢@@
其實你大可趁這機會大撈一筆的,不是嗎?
真是個心地善良的人。
由衷地感謝你並祝你歐趴!!
(呃,關於期中考你需要的也許不只是祝福? = =)
(忍不住還是想來這裡摸一下的你好可愛ˇ)
Cindy
2008 年 四月 23 日 星期三 at 2:56 am
@Cindy:
因為我是砍人家的東西來整理,而且又是放在學術網路,所以當然不能收錢,而且我也不想收錢…。
謝謝妳的鼓勵。
Chitsaou Yorkxin
2008 年 四月 23 日 星期三 at 3:00 am
呵呵
沒記錯的話你不是要考到4/25嗎?
怎麼…
哈 別客氣啦!
要加油唷*
Cindy
2008 年 四月 23 日 星期三 at 3:08 am