What have you found for these years?

2009-04-21

passenger on nginx

Phusion's One Year Anniversary Gift: Phusion Passenger 2.2.0

原本不用 passenger 的理由差不多只有因為 apache.
現在既然 nginx 也支援,還是完全 bundle 好的.......

稍微試了一下,結論在這:

pros:
1. 比我手工刻 app-deploy 與 rack cluster 來得好 :s
畢竟我只是(能)花了一點時間在寫這,別人卻是...

2. 管理非常簡單,去除原本 nginx 的設定外,只要額外設:
server 下的 passenger_enabled on;
http 下的 passenger_max_pool_size 2;
預設是 6 的樣子,一般開發設 2 就夠了...
接下來就是平常 nginx 怎麼用就是怎麼用了。
還有 tmp/restart.txt 可以用,很方便。

而我原本的 rack cluster 一直有 user switch 的問題...
passenger 則自動用檔案 owner 來判斷。呃,其實我希望可以改...
用 nobody 來跑,反正 tmp 和 log 設成 777 就好。
但這應該是小事?真的有必要就去改他程式碼就好了...

cons:
1. passenger_max_pool_size 是 http directive,
意味所有 server 得共享這個數字?這樣有點不方便。

2. 雖然「據說」搭配 ruby enterprise edition
有效減少記憶體用量,不過稍微測一下還是比 thin 多吃記憶體。
但當然這還有待觀察,不能一言以蔽之...

看起來還沒寫好的 document:
Phusion Passenger users guide, Nginx version
說沒改好是因為裡面有這句話:

Finally, we deploy it by adding the following configuration
options to the Apache configuration file:

但是 the following 很明顯是 nginx 的 configuration file :(
所以說不定 cons #1 其實是不正確的,只是他手冊沒寫對而已。
畢竟 passenger_max_instances_per_app 跟 idle time 到底有何關係??
(updated: 我剛剛發現他這段的描述和 passenger_pool_idle_time
完全一樣,看來確實是他的文件錯誤。但翻回 apache 的文件,
看起來也是 global 的,那還是一樣不方便。)

我跟 apache 實在不太合,他的 config 我常常要查半天才能寫對。
但是 nginx 幾乎是隨便猜都能猜對... 從此完全不想碰 apache 了。

==
總而言之呢,一旦 passenger on nginx 效能沒有輸 thin 太多的話,
(上次測還是 thin 比較小又快)基於便於管理的理由,thin 大概就扔了吧。
因為要弄 thin 說真的很麻煩,我寫的 app-deploy 也不是很完整 :(
更新看起來又是 passenger 遠遠勤於 thin, 更別提半死不活的 mongrel?

而且就算用 thin, nginx 還是必須的,除非沒有 static file 要 serve.
我知道,或許 static file 本來就應該拿到其他地方 serve.
但多一個 passenger on nginx 幫你處理也沒什麼不好不是?
至少單用 thin 去 serve, 就連在開發上都是有點不利的...

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0