我的 Blog 系統造成虛擬主機的負載過重!

從上星期三開始,收到 ServerZoo 寄來的緊急通知信,說道我的 Blog 系統造成他們主機 CPU 的負載過重,已經超過整台主機 CPU 的 50% Loading,所以給我緊急關站。

我這一年來在虛擬主機商(已換過三家)的 Blog 還真是不安穩,要嘛太慢、要嘛夠貴(頻寬傳輸嚇人),現在又搞出這問題,我也莫名其妙。原來技術人員是懷疑我的 RSS 一直被大量呼叫,所以我也把 RSS, Trackback 先給關閉,但是問題仍存在,星期六晚上,ServerZoo 的技術人員可真勤勞(例假日他們沒有客服),晚上又給我緊急給關站了,然後 Email 傳給我這個畫面,CPU 負荷仍超過 27% !

serverzoo_system_monitor

連續幾次的關站,讓我實在有些不高興,而且並沒有具體找出真正的原因何在。這讓我在昨日(星期一)下午時與在 msn 的 ServerZoo 客服人員抗議,ServerZoo 的客服態度,一般還算不錯,並不會不客氣,表現得不卑不亢,他建議我更新 Blog 系統,第一時間我是覺得,b2evolution 的系統應該夠穩定的吧,我所使用的 1.8.2 系統也是在過外眾多部落客一直在使用的,在官方網站的討論區也沒看到有誰反應類似的問題。我還是希望 ServerZoo 能給我一個 “清楚的交代”,具體的指明問題在那,乾脆就直接打電話給他們(客服單位位於台中)。接電話的客服人員蠻客氣,也蠻有技術的底子,與他討論許久,他是說可以從我的 Log 檔看得到有些 IP 在同一時間一直存取某一個網頁,大概是這個樣子:

122.124.34.74 - - [15/May/2007:01:27:30 +0800] "GET /media/normal_chinese_solution_button.jpg HTTP/1.1" 304 - "http://www.kenming.idv.tw/index.php?title=a_cc_u_planplus_eb_a_e_peu_c_leiuc_a_a_a&more=1&c=1&tb=1&pb=1" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
122.124.34.74 - - [15/May/2007:01:27:31 +0800] "GET /media/thumb_weekly_planning_01.jpg HTTP/1.1" 200 38584 "http://www.kenming.idv.tw/index.php?title=a_cc_u_planplus_eb_a_e_peu_c_leiuc_a_a_a&more=1&c=1&tb=1&pb=1" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
122.124.34.74 - - [15/May/2007:01:27:32 +0800] "GET /media/thumb_weekly_planning_02.jpg HTTP/1.1" 200 32643 "http://www.kenming.idv.tw/index.php?title=a_cc_u_planplus_eb_a_e_peu_c_leiuc_a_a_a&more=1&c=1&tb=1&pb=1" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
122.124.34.74 - - [15/May/2007:01:27:32 +0800] "GET /rsc/css/basic.css HTTP/1.1" 304 - "http://www.kenming.idv.tw/index.php?title=a_cc_u_planplus_eb_a_e_peu_c_leiuc_a_a_a&more=1&c=1&tb=1&pb=1" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
122.124.34.74 - - [15/May/2007:01:27:32 +0800] "GET /rsc/css/img.css HTTP/1.1" 304 - "http://www.kenming.idv.tw/index.php?title=a_cc_u_planplus_eb_a_e_peu_c_leiuc_a_a_a&more=1&c=1&tb=1&pb=1" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
122.124.34.74 - - [15/May/2007:01:27:32 +0800] "GET /index.php?title=a_cc_u_planplus_eb_a_e_peu_c_leiuc_a_a_a&more=1&c=1&tb=1&pb=1 HTTP/1.1" 200 87451 "http://tw.search.yahoo.com/search?p=%E6%99%82%E9%96%93%E7%AE%A1%E7%90%86&ei=UTF-8&fr=yfp&vst=0&vs=www.kenming.idv.tw" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
122.124.34.74 - - [15/May/2007:01:27:32 +0800] "GET /rsc/css/blog_elements.css HTTP/1.1" 304 - "http://www.kenming.idv.tw/index.php?title=a_cc_u_planplus_eb_a_e_peu_c_leiuc_a_a_a&more=1&c=1&tb=1&pb=1" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"

同一個 IP 在幾乎同一個時間點存取了 20 餘次,這應該就是造成 CPU 負載過重的原因! 我用 IP 反查詢,發現到有些 IP 位址有位於香港,也有位於澳洲的,但是我不知道那是否是 搜尋引擎的 Spider Robot 造成的?

乾脆,昨晚我把 Blog 系統換成最新的 1.10-beta “Miami” 的版本,更新的過程不是那麼順利,花了我三個多小時才完成。我會把更新過程一些注意事項寫在【建站日誌】記錄下來的。當然,更希望造成 CPU 負載過重的原因能因此而解決。

是否有經驗的網路系統技術的讀者們,還是也曾有過這種經驗的 Blog 友站站長,可否協助判斷,真正的問題會是出在那裡呢? (ServerZoo 把我的站台關閉後,CPU 負載從 50% 降到 0.~ %,確定是我的 Blog 系統出了問題(正常不應該有此情形),而不是 “人氣” 太高所造成的)

解決本站中文顯示亂碼時的瀏覽器設定方式~

今天收到 yungyuc 的留言,告知使用某些瀏覽器瀏覽本站時,中文都會變成亂碼…
>您這個系統kmr xiy 用 Firefox 和 Seamonkey 看 (Windows/Linux 皆然),中文都會變成亂碼。IE 和 Opera 正常 (僅測試 Windows)。

其實這問題出現蠻久了,我的朋友在美國,即使使用 IE(英文版本) 瀏覽我的站台時,也是無法正確顯示中文,也有是網友反應,使用 Firefox 會出現亂碼,但在 Windows 系統下使用 IE 卻沒有問題... 一直都找不出問題的癥結在那裡,後來是本站的一位讀者給了解決方案(實在感謝他!)。不過,我仍不知原理到底為何? (我的 Blog 系統係為 utf-8 的正體中文編碼方式。)

先列出如何讓各種瀏覽器均可以正確顯示中文的設定方式:

  1. 打開 IE 瀏覽器,在選單中,選擇【工具】【網際網路選項】【一般】。
  2. 在最下列選項中,選擇【語言】,出現【語言喜好設定】對話框。
  3. 選擇【新增】,選擇語言為 zh-tw (中文(台灣))。
  4. 其它瀏覽器亦比照如同之設定方式,也就是一定要新增 “zh-tw” 語言,如此才會送出 Accept-Language:tw,而顯示正確的中文(utf-8)編碼。

正確顯示本站中文編碼的瀏覽器設定方式~

【站台資訊】新增「防堵 Spammer」的迴響驗證

這幾個月來,我的部落格被 Spammer 攻擊得實在厲害! >:( 就是有一大堆無聊的 Spammer 會在你的部落格留下一大堆的垃圾迴響,幾天要不清,大概就有上百封,不勝其擾。

b2evolution 是有一套 plugin: captcha ,可以利用部落客讀者需要輸入影像內的數字來達成驗證的機制,這也是大部分部落格系統所使用的一種技術。不過個人是嫌影像內的數字不清楚、不簡潔,而且好像也蠻佔系統資源的…

最近倒是出了一個不錯的 plugin: Turing Test,簡潔不複雜,只要使用者直接輸入系統提示你的答案即可。

在我的部落格中,目前我只需要讀者迴響時,輸入個驗證字串: “bobo”,就是雙引號內的字串,4個字元就可以了,夠簡單了吧(當然,爾後驗證字串還是會不定期的修改,只要看問題所提示的答案就可以了)。

【系統升級】b2evoultion 0.9.2 to 1.8.2

既然要把 Blog 轉移至 IX WebHosting,乾脆也把系統作個升級,因為,實在被 Spam 給搞得很煩,動不動一天有十來封的 Spam Comment,這還是我已把 Trackback(機制) 給關掉的。聽說,最新版本的 Spam 管理機制作得比較好,當然就決定來作個系統升級!

我從前年將 b2evolution 持續升級至 0.9.2 版,一整年就停止升級了,而現在官方網站推出的最新版本是 09/20 的 1.8.2 (stable) 版本,變更蠻多的,其實是無法直接從 0.9.2 直接以 wizard 的方式來升級,而是需要透過一些手動的方法來設定,所以與其說是 "升級(Upgrade)",倒不如說是 "移轉(Migrate)" 比較恰當。

所有的系統的 "migration",我都是先在自己的 WindowsXP 系統安裝了 apache+mysql+php,模擬了與未來 IX WebHosting 的系統環境,版本盡量安裝一樣的,如此在時常修改的情況下,就可以避免掉慢速的頻寬傳輸,作實驗也比較方便。

我的 Blog 系統移轉,分為主要三個步驟:

  1. 資料庫的移轉。
  2. Skin 樣式檔案的設定與修正。
  3. 主頁面的修訂 (Customizatioh)。

第一個步驟反而是最簡單,先在 local 創建了 b2 的資料庫系統,然後把原來 0.9.2 的資料庫表格與資料一併給匯入 (import) 至該資料庫,再來把下載 1.8.2 的檔案解壓縮後,執行子目錄的 /install 程序,其中有個選項就是會協助你將 0.9.2 的 Table Schema,給轉移至 1.8.2,而原來的資料,也會被妥當的配置在 1.8.2 的 Tabase Schema,過程很順,完全沒有錯誤。這一個步驟可切記要執行 /install 其內的 DB 移轉精靈 (wizard),可不要傻傻的自行利用 phpmyadmin 一個一個去檢查相對關係,然後再以 INSERT 陳述給寫入進去,太耗功夫了,而且,Tabble Schema 從原來在 0.9.2 是 10來個,已增長至 1.8.2 的 30 個了,Data Model 的關係,更是複雜許多。

第二個步驟呢,當然就是設定 CSS,看似簡單,但,因原來的 skin 檔案並無法直接 copy 至移轉的系統目錄內,新增了一些 tag 的設定,所以這一次我又比較專注,針對每一個 Blog 的元素,包括 content, sidebar,然後再至各項細節,一一的去詳細檢查與重新設定。 這反而花了我比較久的時間,大約有一天多的時間,都在做 CSS 的樣式調整。

第三個步驟,也是類似的原因,而且因為有以前我 "Hack" 的核心檔案,當然到新版本無法使用,所以我必須去官方網站的討論區、Forum、原始碼等,自行來尋找符合我以前所寫的函數功能,或者需要重寫。因為新版本是以 "plugin" 擴充模組的方式來擴充系統的功能,看來應該比較有彈性,但,要我自行來寫 PHP 模組? 呼,對我太吃力了,我可不想花這些美國時間在這裡,若能用現成就用現成的,若沒有,我仍是以 "Require" 來 include 一段副程式,達成部分的使用就好啦。我的「本頁文章列表」功能,就是以這種方式快速給自行寫出來的。

整個系統移轉的時間,大約花了三天左右,然後我又重新調整了 "文章類別" ,讓其看起來更具條理,也比較讓文章容易被分類,尤其,以我的「軟體設計」這一大類別,更是作更細部的類別分類,未來我會更加多寫許多與軟體相關主題的文章。b2evolution 有支援樹狀的子分類方式,並且可以讓文章屬於某一個主類別與多個次類別,所以比較容易有條理,但因 b2ebolution 仍尚未支援以 "標籤(TAG)" 的方式來 "attach" 文章,所以在分類上,仍稍嫌彈性不足。

現在我的主頁面應該看起來更清爽了點吧? 我比較傾向以 "極簡素雅" 的風格來呈現頁面,所以對於黑底白字、一堆有的沒的外掛如天氣預報那些模組,盡量是不要改擺上來,實用價值不高。不過,若時常瀏覽個人網頁的朋友們,若有相關的建議,也請迴響留言,好讓我作個參考,看是否在主頁面上該增加哪些新功能,或是視覺上的修正,都歡迎提供意見!

【建站日誌】系統已移轉至 IX WebHosting

利用中秋節這幾天的時間,從把 Blog 系統(b2evolution)升級至 1.8.2(原來是 0.91),再移轉至 IX WebHosting 的虛擬機器內,總算是完成了,現在這篇文章,就是在虛擬機器端所完成的。 🙂

只要利用 IX WebHosting 的管理介面,創建好你的 domain,就會在虛擬主機端的根目錄新增與該 domain 同名的目錄,以我的為例,就是 kenming.idv.tw。

系統移轉相當簡單,我花不到一個小時就完成了,但是,卻在規劃上花了我一整個晚上思考,其中最為難的,就是關於檔案位置的設置問題了,因為,在我原來自己所架設的 Linux 主機上,只要更改 apache 的 httpd.conf 設定檔,就可以任意的將檔案位置擺在任何實體的位置,然後再以虛擬目錄 (Virtual Directory) 來指定即可。但是,在虛擬主機端,卻無法讓你直接來設定 httpd.conf,你只能在你 doamin 的根目錄下,"實體" 放入檔案夾與檔案,也就是說,從虛擬主機的根目錄下,只能實際擺放你的網頁實體檔案夾與檔案,例如,若你的 blog 是擺在 kenming.idv.tw/blog 實體位置,那麼,你所對應的網頁位置一定就是 http://www.kenming.idv.tw/blog/ ,雖然可以透過 Redirect 機制將網頁從根目錄轉移至子目錄(/blog),但實體位置仍是在 /blog 下。唉呀,就是只能,"虛中作實",卻無法 "虛中作虛"。 :'(

早兩年,我的個人網址 (http://www.kenming.idv) 就已確定以 blog 的型態呈現,所以當初在規劃時,網頁根目錄就是實際放入 blog 系統的相關檔案。但是當你創建了在 IX WebHosting 的 domain 根目錄後,該根目錄同時也是 web 的根目錄,而 IX WebHosting 因為貼心的緣故,還幫你預設擺了管理該 web 的許多目錄與檔案,所以,就勢必必須將我的 blog 所有檔案與這些如 CGI, WebAnalyzer 等目錄擺在同一層上。對有 "潔癖" 的我,一開始實在無法接受,我很習慣 "乾乾淨淨" 的只擺該 /blog 的檔案,其它的檔案,例如非 blog 系統所提供的留言版,我會用虛擬目錄指向其它的實體位置。

是有另外一種解決方案,就是你可以在 root doamin 下再創建 sub-domain,例如可以創建 blog.kenming.idv.tw, phpto.kenming.idv.tw …等。然後 /blog 指向 blog.kenming.idv.tw, /photo 的檔案指向 photo.kenming.idv.tw。但前面已說過,我因為很早規劃時,就是把 www 根目錄當作是 blog 的首頁,所以若我將 /blog 給全搬移到 blog.kenming.idv.tw 的話,那麼我原來所有的文章也勢必要變更其位址,卻因許多網友與 google 都有參考我既有的文章,一旦變更,可是會影響很大 (會影響到 google 的排名,我許多關於軟體設計的文章,許多關鍵字都可以被排在第一頁)。 Mark 這方面可就非常聰明了,他很早就是以虛擬主機當成他的窩,所以他在規劃他的部落格時,blog 是指向 http://blog.markplace.net/ ,而非 http://www.markplace.net/ 。

思考一個晚上,決定不變更我原來所有文章的參考位址,所以只能 "屈就" 將所有與 blog 相關的目錄檔案全給擺到 domain 的根目錄下。決定好後,要移轉卻是很簡單,利用 ftp 上傳就可以了,然後又透過其內建的 phpmyadmin,創建 blog 的資料庫,匯入(import) 資料,整個過程不到一個小時就完成了。 P.S. 移轉其實很簡單,但是我在作 b2evoltuion 的系統升級,可是整整花了三天,這另外擇文來說明。

對於 IX WebHosting 這家虛擬主機的 Supplier,讓我印象實在非常深刻。光一個晚上,我隨時呼叫 Chat-Online Service (利用 Java applet 作成的),24 Hrs 均有專人服務你的問題,是直接對談喔,如同透過 msn,我問的問題是很 "刁鑽" 與 "仔細",對話過程中,我可以感受到他們有些不耐煩,但仍是很客氣地回覆你的任何問題。昨晚就呼叫了三次,三個客服人員都不同,但水平都相當不錯,我問到如 .htacess 等細部設定的問題,他們也能回答你。應該是比國內一般玩家的水平還高上一些,這實在很難得,在台灣的客服,我還沒有看過有技術水平素質均相當平均的團隊,看得出來 IX WebHosting 有給他們受完整的系統管理等教育訓練。

再來就是,昨晚剛一設好,馬上變更我的 domain 所對應的 nameserver 位址,直至今天下午約兩點時可以通,但速度非常慢,慢得我根本受不了。除了馬上反應給他們線上客服外,我又同時在 help desk 寫了一封 "Trouble Ticket",反應我的問題與我無法忍受如此慢的龜速,嘿,約兩個多小時後,他們資深的網管人員就回信了,說明是因為 backup process 運作而導致系統運作的不一致性,因此而讓效能降低,他們馬上就修正此一問題,還致上歉意。客服的效率實在相當棒,讓我相當驚訝,對於客戶所提問題的重視與處理效率,讓我太感佩服了,而且每一封 "Trouble Ticket" 他們都會作追蹤,並隨時與客戶以 Email 聯繫,來瞭解處理情形。

除了對於連線速度上,我還是覺得稍嫌慢了點,但還可以接受 (不得已,畢竟主機是在國外)。也希望瀏覽我網頁的朋友們,這一陣子若有感覺有瀏覽、留言等速度太慢或其它異常現象等問題的,煩請留個言,好讓我可以處理。

延伸參考
最近要將 Blog 網站移至 “IX WebHosting” 虛擬主機

最近要將 Blog 網站移至 “IX WebHosting” 虛擬主機

我的 Blog 網站,是架在自己家裡,向中華電信所申請的 3M/640K 的 ADSL 專線;主機用伺服器等級的 P3, 512MB, Ultra SCSI 60G HDD;系統跑的是 Linux Fedora Core3。

兩個主要的原因,讓我不得不考慮承租虛擬主機:

  • 連線費用太貴了,一個月要約 $3000。
  • 沒有時間去維護 Linux 系統了,且動不動就有 Hacker or Spam 入侵,不勝其擾。

會自己動手來安裝與設定 Linux 系統,之前多少是有一些興趣,況且所有的應用程式,如 PHP、MySQL、Apache 等,都可以自由編譯與選擇版本,彈性度大得很多。還有,多少沿襲了我以前架設 BBS 站台的習慣,一切自己來!

不過,說真的,我已經喪失了對Linux、應用系統等架設及 DIY 的樂趣了,現在只想將系統設定的範疇交給虛擬主機供應商,只要能安心地寫文章、方便傳輸圖片與檔案等,就好了,不想搞得太複雜。

前兩年之前,我是從來不會放心去承租虛擬主機的,因為我認為我的應用系統的客製化程度相當高,供應商不太容易配合我的需求,對了,多少也有受到國內供應商普遍程度、水平與服務不佳,以及承租費用仍嫌過於貴的影響,所以一直對所謂的虛擬主機沒啥好感。不過,前陣子透過 MSN 與國內 Blog 名人 Mark 請教的結果,他建議我可以考慮承租國外的虛擬主機,他自己使用的結果,還蠻不錯的,價格也相當便宜。

除了請教 Mark 所推薦的供應商外,同時也找了一下 Google,這裡:「外國主機諮詢網」,大陸的網站,對主要是歐美的主機供應商均有作介紹與評論。透過該網站的評論與文章介紹等,總算對所謂的虛擬主機等服務有些瞭解了,也比較逐漸能去除我之前的一些疑慮,包括如何管理、如何架設等問題。

看了數十篇文章的介紹,又搜尋了 Google 的網友已有承租過的經驗等,然後我親自去主要首選的幾個國外供應商的首頁去看他們的產品與服務介紹等,讓我印象最深刻的,就是這家 IX Webhosting

不是價格便宜的問題而已,反而價格太便宜,我真的會擔心,擔心服務品質與傳輸(許多廠商,會限制每個月的傳輸頻寬容量),所以對於每個月只要 $6.95 美金那種方案,我根本不放心,聽 Mark 說,他曾經被供應商把站台給暫時關掉,因為傳輸量超過了,也曾經 72 個小時當機。這種的品質與容錯服務,我不能接受。

至於 IX Webhosting 這家服務供應商,本來看其首頁並沒什麼特別的地方,不過它有個 Chat Live 服務,我點選後,馬上真的有服務人員在線上與我交談,嗯,相當訝異,我問的問題,他們均可以很輕鬆地回答你,諸如使用 PHP, MySQL 等版本問題,Blog 系統架設問題,unicode, utf-8 繁體中文支援等等問題... 真棒! 我所有的疑問,全在 Chat Live 的對談中得到解答了,而且也對他們的服務人員的專業水平感到信任(我總共在三個時間問了三個服務人員,每一個服務人員的水平均很好)。 這讓我想到,前兩天我打電話給國內某家相當具知名的虛擬主機服務商,想請教虛擬主機的產品與提供的服務這類的問題,客服人員的水平非常之差,可說是一問三不知,後來我火大,問她們是否知道國外如 BlueHost (國外排名第一大) 這類的主機服務商的產品服務方式,她們根本從沒聽到國外知名的主機服務商。真的差很多,所以為什麼,國內的虛擬主機服務商,我可說是一開始就不考慮的(是因為 Mark 建議我可以試試,他有認識的)。

我在 IX Webhosting 所選擇的方案是 Linux (它同時也有 Windows 主機的承租), Unlimited Pro 的方案,一口氣就給它租了兩年,因為夠便宜,每個月這樣才 12.95 美金,比起我的 ADSL 專線費用,便宜太多太多了,況且,我可是申請所謂的 “Unlimited Pro” 的最高等級呢。

基本的配置是這樣的:
˙Total Domains: 10  Free Domains: 5
˙硬碟空間與 Email 帳號: 沒有限制
˙頻寬(Bandwidth): 1000GB (沒錯,不要懷疑)
˙My SQL 資料庫數目: 100 個
˙客戶服務:24 / 7 Support via Live Chat
˙正常運行時間保證:99.9%

最近有空檔的時間就要開始作移轉了,然後,也要升級一下我的 Blog 系統了,因為,b2evolution 現在已經 release 到 1.8.1 版了,我現在用的 0.92 版,動不動就被 Spam 給攻擊,讓我不得不關掉 Trackback 機制,我想,最新版本,這些問題應該都有更嚴謹的防治措施吧。 慢慢來,大概準備花一個月的時間,然後,趕緊把我這裡的豪華收費等級的 ADSL 專線給停掉,改為一般的 ADSL 傳輸就好了。

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal