罄竹難書的Windows,在上面開發Ruby & Rails會發生的問題


#1

此文章由舊的RailsFun.tw討論區整理後轉回,作者:JokerCatz,原標題:Windows罄竹難書之為何不用Ubuntu(Linux)開發ROR


寫這篇來丟Windows的壞話||||,有啥想抱怨的也請盡量的回文,請M$派沒深入測試效能和後果的擾亂魔人離去

話說很久以前,JokerCatz還是JellyCatz的時候(當兵前的ID),開了一個1.2.6的Rails project,並很成功的發展起來了,in WindowsXP / Mongrel service,我相信很多人也這樣使用,尤其在XP下開ROR的

之後,半年後,也就是當兵期間,犧牲了很多很多的當兵假期來處理Windows造成的很多很多的問題,多到很想罵M$的祖宗18代,總言之就是XXX的Windows & NTFS,以下

1.NTFS的問題

當時還在用DB/File session,而非目前的cookie session,當你的session資料夾超過一萬個檔案後,你的CPU有80%都在處理細碎檔案,okay,所以定時清理session file

當你的Server長久到一定的程度,你的Apache會死掉,因為你的access.log / error.log超過4G後,後果同上,okay,定時清理,但這樣我就沒辦法用awstats了

Rails預設的DB格式 with MySQL是innodb,MySQL預設是沒有設定"ibdata1"的大小的(innodb的交易檔),當該檔案超過2G以上,因為"經常性的修改",造成後果同上,且MySQL也會停住,除非整個dump / restore否則無解

很多人都不知道,或是也有很多人知道,磁碟掃描&磁碟重組只有在Windows上面會出現,還非常經常的"做",Windows軟性壞軌的機率也非常的高,基於以上,你如果有做檔案/圖片/影片的上傳,或是使用很多的暫存檔,或是放得夠久,掛掉的日子離你不遠矣,那是NTFS的本質,並沒任何一個Windows版本能夠改變的

2.Windows的問題

Windows的lib or 執行檔大多是close source或是GUI介面,那樣導致你的server不能做太多的call system(cmd執行)的動作,像是轉檔之類的,且系統非常的不穩定,停機率太高,相反地Linux系列因為所有的東西都是先有CLI(終端機介面)才有GUI,所以隨便你call system,想得到能轉的都能轉(like rmvb轉avi),兩行指令就可以寫出youtube的效果時,why not?(註1),且Windows記憶體調配,CPU優先權,核心的保護,安全性有非常大的問題,當99%的病毒都是在Windows上發生時,當Linux / MAC系列的防毒軟體其實根本沒人在用時,這樣的作業系統,實在是不適合當24小時不停機的server使用

結論

當你知道我退伍後全部轉Ubuntu以來,沒有硬碟重整過,檔案從沒有因為過多or過大而lag時(剛看我的開發用server的ibdata1已經超過18G了|||),為了讓你的未來不要太痛苦,請你轉到Linux來開發ROR,順便也增加一個技能,雖然有一段時間的新手痛苦期,與Windows/Linux切換的問題(如果你還想玩很多遊戲的話),強烈的建議請你轉到Linux去,可以的話也請玩玩看不用Vista 1/2硬體就可以達到那樣效果的compiz桌面效果,還有很多好玩的東西,也讓你的技術更專業,手藝也更精粹

尾末,如果你有閒錢的話,可以呼叫CFC,他一定會把你洗腦成mac教徒(去他的mac主義者…Orz"不過他成功了||)[mac是Unix的BSD系列改良,可以用port來轉換大多數的linux lib,不過HFS+硬碟格式比較差,所以只適合當開發端,真正server端還是請用Linux / Unix系列主機才是]

(註1):最近寫的case,最核心是call system兩行指令即可達到取影片縮圖和壓縮影片,包括rmvb格式轉成flv


RadRails 智能提醒 有些關聯提醒
操作資料庫問題
安裝webpacker於rails4.2 on bash on windows 10
求救 MySQL 資料欄位格式問題
對不起,讓我問一個白癡問題
SSL / HTTPS 建議與設定
#2

許多好用的 gem 在 windows 上面也沒辦法使用也是開發上的問題
造成開發的不便及無法 deploy 已開發完成的專案等等的問題