不要再用 nnCron Lite 了

Sunday, 14 December 2008 09:10 by admin

如果您只是要做點簡單的排程,將某個應用程式在某個時段執行,大可以用 Windows 內建的 "排定的工作" 執行,雖然不是很好設定,但也堪用了 (如果您想進階一點,可以在 cmd 下用 at 來設定),如果您的排程比較複雜,又不想用 Windows 內建的設定的亂七八糟,這時候會發覺 unix 用戶有 cron 可以用,真幸福

當然在 Windows 底下,也有類似的軟體,這時如果搜尋一下,10個人會有9個人說用 nnCron Lite ,免費又好用,其實我也用他個把年了,如果有那們不堪使用,我早就丟了

直到最近終於發現了大問題,nnCron Lite 並不會在預定的時間下執行您要的工作!!這時或許會有 unix 用戶跑出來笑,cron 本來就能準確到"分",而且還有 missed tasks 機制可以處理,當然我可不是講這個狀況,我發現他會在他高興執行的時間,再執行您要的工作,這時可能已經過了半小時以上了,如果您只是一天跑一次的工作,慢個半小時跑或許只會有點讓人不高興,但如果您是30分鐘以下要跑一次的,這時可就會出人命了,就好像在產線生產東西,作業員中途不見半小時,回到座位時那站卡了一堆工作,就算作業員加快10倍速度處理,但整條產線卻已經大亂,最差的狀況是每小時要執行的,卻積了三個小時多才執行 (但同時他把堆積了也同時清掉 )

nnSoft 看起來也像個空殼了,其實 nnCron Lite 已經好幾年沒更新,網站討論區也掛了,更扯的就是他的下載區日期其實會自動更新的,當然用過免費的糟成這樣當然不會讓人想買要錢的,這時再次上網搜尋,還有一套較少人推薦了 CRONw

CRONw 是用 Perl 寫的,使用前須先有 Perl 的執行環境,如果是採用 ActivePerl 要注意,不要下載到 5.10.x 版本,要用 5.8.x 才能安裝,完整的安裝程序要看一下 INSTALL.txt,另外安裝前需要先把 nnCron Service 先移掉 (因為名稱有衝突,會無法安裝),雖然 nnCron 的功能比較齊全,也比較省記憶體,但執行時間不確定的問題太過於嚴重,不用花一毛又可以解決問題還算可以接受

手動更新CS版本

Sunday, 14 December 2008 08:49 by admin

當初 CS2007 以前可以選擇用資料庫,在 CS2008 全面採用 CFS (Centralized File System) 後,如果是升級上來的版本勢必需要將資料庫的檔案複製出來成為獨立的檔案,因此 [Telligent] 寫了一個應用程式來升級

當初用此升級程式是必要的,因為如果有大量的檔案要匯出,用 ASP.Net 是比較不好的決定,但如果僅僅升級個 Service Pack 就出動一艘航空母艦,說實在真的是太扯了,而且如果您是虛擬主機用戶,對於此方式來升級網站,要把遠端的檔案案資料庫全部複製到本機,升級後再複製回去,光上下傳檔案的時間就會造成很嚴重的 downtime

這時就會開始懷念當初只跑跑 T-SQL 升級的方法了,在一開始 CS2008 僅有在 SDK 版本才有放置一個 T-SQL 升級檔案,在 CS2008.5 SP1 已經在各版本放入了 (大概是被客戶罵到臭頭了),檔案放在 Web\Installer\SqlScripts\cs_UpdateSchemaAndProcedures.sql

如果您已經是 CS2008 以上的版本,其實不必要使用這套升級軟體,採用原本的 T-SQL 升級程序和複製檔案即可,這個升級軟體在一開始測試時,就回報如果您已經先把 CFS 的目錄建好時,在 STEP.7 就會發生錯誤,但 Telligent 依然置之不理,如果您在 STEP.7 發生錯誤,其實網站依然是很正常的

說穿了 Step.1~3 就是那個 cs_UpdateSchemaAndProcedures.sql 拆成三段跑,Step.4~7 僅僅給 CS2007 含以下的版本升級使用,如果您是VPS或實體主機用戶,用此應用程式升級會比較快,如果是虛擬主機用戶,還是把這套丟了吧

調整 CS2008 的 CacheFactor

Wednesday, 3 December 2008 09:33 by admin

CommunityServer 運用了 ASP.Net 的 Cache 技術,將大部分的資料都做了快取 ( 雖然效能看不出來有快到哪 )

這樣做雖然對於資料庫讀取和顯示速度也很大的幫助,但如果你是使用VPS或低階實體主機,這時你就會發現記憶體耗的相當驚人,以本站這種不太有人氣的網站來說,光 CommuntiyServer 就吃了2xx~3xx MB ,如果沒有隔幾天就回收一次 AppPool ,或是遇到瞬間爆大量的搜尋引擎Robot,很快的記憶體就被吃光了 (不會叫我加記憶體吧,主機商128MB可是要USD$10/月,現在都可以去買一條1GB回家了)

如果想省一點記憶體,其實是可以調整的,在 CommunityServer.config 中,找到 CacheFactor ,原本預設值是 5 ,但這個值原本的用在中型網站上 ( 約同時有500~1000個用戶 ),這個太看得起我了,建議是調整到 2 或 3,當然也是可以調整到 1 ,調整到 0 可能會有些問題產生 ( 官方說法是這個值最小是 1 )

當我調整到 CacheFactor =2 後,記憶體使用量幾乎只會到 250MB ,大概減少了 1/3 的使用量,我想這樣的效果應該是馬馬虎虎,勉強可以接受,這個經驗可以給大家參考

CS2008.5 SP1 搭配 SQL2000

Wednesday, 3 December 2008 00:52 by admin

原則上 CS2008 與 CS2008.5 是可以用在 MSSQL Server 2000/2005/2008 上的,但或許已經比較少人用 SQL Server 2000 了,在 CS2008.5 SP1 誤用了不支援的指令

如果您還在用 MSSQL Server 2000 ,在更新前可能需要修改一下升級的檔案

原文請見 http://dev.communityserver.com/forums/t/504512.aspx