Home 科技世界 自費開箱測試

【評測】試用 Digital Ocean VPS 服務

2415
2

Digital Ocean

最近並沒有更新 blog,並不是企企懶了,只是企企的「技術魂」返嚟喇。
上前和 Cake Start 網主談論 Hosting 問題,他原來一直使用日本 Lindoe VPS,約 US$20 一個月,速度穩定度都不錯,台灣知名網站重灌狂人之都使用 Lindoe 的 VPS,讚又快又穩。(題外話,最近 HostGator 很不穩定時常出現 Error 502)
不過 VPS 我之前見過一間叫 Digital Ocean 的 VPS 廠商,這間 VPS 特別之處是用 SSD,I/O 速度很快,而且價錢相宜,$5 一個月已有 20GB SSD + 512MB ram,同樣價錢下 ram 比 Lindoe 更多。
不過最重要的是他們新開新加坡 data center,不用每次都連線到美國。香港的 ISP 都有專線到 (尤其 PCCW) 新加坡,所以 ping time 很低;但台灣則比較慢,因為台灣到新加坡是經香港到日本,再去新加坡,變成和美國 server 差不多 ping time,對於台灣來說日本 server 應該會好一點。

至於 Digital Ocean 的缺點,在 webhostingtalk.com 看到評論就是 CPU power 給得較少。
但看完評論總是親身試一下驗証吧。

雖然 Digital Ocean 的 coupon 已過期停用,但都忍不住租一租來玩玩,因為他是以小時計算,玩一個星期就計一個星期的價錢,這點非常好。
不過初初玩 VPS 不太清楚從何入手,幸好有 Cake Start 網主教路,現在玩 VPS 已經不用自己逐樣逐樣安裝,已經有很多懶人包一次過安裝,而且還有 WebUI 可以控制 server,輕鬆簡單,現在數個這類 Control Panel 可以選擇。

安裝了 Virtualmin 試用 Digital Ocean,速度是快 Hostgator 一點,不過因為上了 Cloudflare,所以速度上未有十分大的分別。
而且本 blog 還有很多會拖慢的 Javascipt,如首頁的 Feature Post (其實我很喜歡這個才選擇這個 theme),還有 Post 上的 DiggDigg、Disqus 等,都拖慢了速度,所以增速並不明顯。
Digital Ocean 使用 KVM 來提供 virtual machine,KVM 特性是 I/O 強項,CPU 是弱項,而 Digital Ocean 的 I/O 的速度真的令人印象深刻,這段時間我不時轉換 Control Panel,由一個 VPS scp 過 file 到另一個 VPS,所有檔案都是秒速炒寫,極快。
由於線路上 Digit Ocean 較佳,再加上 IO 較快,Ram 多一倍的情況下,彌補了 CPU 之不足,在香港的速度 Digital Ocean 比 Linode 更快。
Cake Start 網主搬了去 Digital Ocean 後,他的網站速度快了一些呢(原本已經好快)。

Digital Ocean 另一個好處是彈性,DO 可以讓你隨時增加減少 CPU / Ram,萬一好像之前企企超受歡迎的那篇文章一樣,流量突然爆升 (reddit effect),Digital Ocean 即時增加 CPU / Ram 來應付,當流量回復正常後才轉回原本的計劃。不過這樣的話亦即是如果你需要增加容量的話,你就需要重新 create 一個新 droplet,不可直接升級。
另外 Digital Ocean 在新建 droplet 時,可以選擇增加 backup 功能,而 backup 功能需要額外多付 20%,即是 $20 計劃需要多付 $4。留意建立 droplet 後,Backup 功能就不可以補加 / 删除。
除了 Backup 外,Digital Ocean 還有一個叫 Snapshot 的 backup 方法,這個是一個人手 cold backup 的方法 (即是每次 backup 都要關機),但費用只是 $0.02/GB/Month,收費低得多。
而新建 droplet 時,除了可以由一個乾淨的 image 開始外,還可以由 backup / snapshot 開始新建 droplet,方便測試改動。(亦即是說如果想改動計劃,增加 HDD 容量的話,可以由 backup 建立新 droplet,所以轉換 plan 難度不大,但 down time 難免)

在 $20 plan,即是 2GB ram, 2 CPU 規格下,做了一次 Benchmark Test,不過第一次用 VPS 沒有比較下,不太清楚這分數是高抑或是低。

Digital Ocean Apache Test
Apache 綜合測試
http://openbenchmarking.org/result/1403220-PL-ENTERPR1S93
Digital Ocean CPU Test
CPU Test
http://openbenchmarking.org/result/1403233-PL-DIGITALOC23
Digital Ocean IO Test
IO Test
http://openbenchmarking.org/result/1403235-PL-DIGITALOC98
Digital Ocean Memory Test
Memory Test
http://openbenchmarking.org/result/1403236-PL-DIGITALOC15

Control Panel 的選擇

當然 CPanel 是最知名最廣泛使用的 Panel,有不少 plugin 可安裝加強功能,不過因為是收費軟件所以一般平價 VPS 都不會提供或者需要另外收費
而免費的都有很多,而且有一些還可以連結 paypal 以便分租 server
免費的 Control Panel 如 VirtualMin 都非常好用,也是不少網友的推介,基本 server 設定,Apache + MySQL + PHP,VPN 等等都有,另外還有這些 Free Control Panel。

因為看過不少文章都說,Apache 是全世界第二慢的 webserver (最慢當然是 IIS),但是最廣泛使用。而另一個由俄羅斯開發的 nginx 則以速度而聞名,尤其是對 static file 存取,即是 HTML, JPG, JS, CSS 等等檔案下載,速度都是無出其右,但對 PHP 或其他 AJIX 等動態網頁支援則不足,尤其是不支援 .htaccess 令不少程式不兼容。
所以現在其中一種做法是將 nginx 作為 reverse proxy,所有 static file 交由它處理,而 PHP 則交回 Apache,這樣可以在速度與兼容性作出平衡。
而 VirtualMin 需要 Pro 版收費版本才支援 nginx reverse proxy,免費版則要自己改動,企企經過一輪憤戰後宣佈投降,基本上可以做到 reverse proxy,但如果新增網站的就會幾困難,所以放棄。

在尋找其他 Control Panel 時,揀選標準是
1. 免費
2. 那個 project 還是 Active 不會很久都沒有更新
3. 當然最重要的要求是支援 nginx reverse proxy, 因為用了 W3TC 後大部份版面都會變成 HTML, 用 nginx 會令 server 容量提高。
其實合格的有 ISPConfig, VESTACP, ServerPilot 三個,不過因為 VESTACP 還非常 active,還有 roadmap 可以看到,所以測試這個。

VESTACP

VESTACP 介面不錯而且還有 status 可以看到,VESTA 支援不同 user 建不同網站,除了 apache + nginx + mysql +php 外,亦已包含 DNS 和 Mail server,一般網站需要用的都已十分齊全。
PHP 方面支援 PHP 5.4,有 mod_php, phpcgi, phpfcgid 三種可以選擇,而 phpfcgid 預設需要 1GB ram 或以上才會安裝。
nginx 亦支援 static file cache 或者為應付突其而來的流量的 сaching mode,可以將 dynamic pages cache 15min
Backup 方面只要將整個 user folder 抄走就可以搬去其他 VPS,但仍未能像 VirtualMin 般支援異地 backup,甚至支援 Amazon 的 cloud backup.

在 Default 情況下 (mod_php + static file cache), VESTACP 使用約 700MB – 1GB ram,用得頗多,而速度則一般,New Relic 的 php 約 0.5-0.6 Apdex score
而使用比較快速的 phpfcgid 就更誇張,2GB ram + 2GB swap file 完全使用,使用 linux 指令 top 可以看到幾乎全部都是 php-cgi 這個 process,用盡了全部記憶體,New Relic 分數只有約 0.03 – 0.2,而網站有時會出現 error 500,可能要超多 ram 才可以應付。

php cgi

其實現在一般 Control Panel 都會用 php-fastcgi 這個外置 module 來處理 PHP,因為速度比 Apache 內置的 mod_php 快得多。
VestaCP 會這樣其實是因為 php-cgi 開啓了大量 children process 而在不懂關閉。
所以需要更改 php 的設定。

根據 Apache 的 Document,其實用 phpfcgi 時應該將 php children 設定為 0,因為這些 children process 時常不懂自動關閉,而且 children process 之間並不能有效分享 resource。
所以在 /home/YOUR_USER/web/YOUR_WEB/cgi-bin/fcgi-starter,改成
PHP_FCGI_CHILDREN=0

另外在 /etc/httpd/conf.d/fcgid.conf,在 “LoadModule fcgid_module modules/mod_fcgid.so” 這句後面加上這些:

FcgidMinProcessesPerClass 0 #no process will be created if the user not active
FcgidMaxProcessesPerClass 16
FcgidMaxProcesses 150
FcgidIdleTimeout 60 #if the process idle 60s will be killed
FcgidProcessLifeTime 120
FcgidIdleScanInterval 30

# Change the rate at which new FastCGI processes are spawned under load. Higher=faster
FcgidSpawnScoreUpLimit 10

# Higher number = spawning more FastCGI processes decreases the spawn rate (controls runaway
FcgidSpawnScore 1

# Higher number = terminating FastCGI processes decreases the spawn rate (controls runaway)
FcgidTerminationScore 2

# Increase the FastCGI max request length for large file uploads (needed for some sites)
FcgidMaxRequestLen 1073741824

FcgidMaxRequestsPerProcess 100000
FcgidIOTimeout 1800

改用這些設定,只會佔約 700MB – 1GB ram,而 New Relic 亦會有 0.6 – 0.75 Apdex score

ServerPilot

在尋找 Control Panel 過程中,找到一個頗特別的 CP,就是這個 ServerPilot
這個 CP 特別之處就是在 ServerPilot 網頁中央控制,如要看 server status,增加 web site 等等,全部都要經 ServerPilot 的網站控制,ServerPilot 就會送指令到你的 Server.
好處當然是中央控制,非常容易 control,壞處是保安程度需要靠 ServerPilot,萬一 ServerPilot 被攻破就很危險了。

ServerPilot 只支援 Ubuntu 12.04.3 x64 這一個版本,其他 Linux 如 Centos 甚至乎其他 Ubuntu 版本都不支援。
理由是他們想專注於一個版本以提供最好的服務,而選擇 Ubuntu 12.04.3 是因為它是一個 LTS (Long Term Support) 版本,提供 5 年的 security updates,所以穩定性比其他版本高。

serverpoilt status
ServerPoilt 的 status,不過 14 日試用期結束後就可能看不到了

ServerPilot 最吸引人之處,是完整的解決方案,它同時兼顧保安與速度。
它用了最新的技術,nginx + apache,另外 Static files 用 Linux Kernel 處理,在 VPS 有限資源下用 Asynchronous 模式,另外支援 SPDY (Google 開發出來比 HTTP 更好的格式),PHP 使用 PHP-FPM 等等(有 PHP 5.4 和 5.5 可以選擇),都令它的速度快其他 Control Panel 很多。

而根據 New Relic 的報告,分數長期在 0.9 以上,是超高分數 (1.0 為滿分),Ram 佔用也很少,只要約 200MB – 350MB 就可以,php-fpm 也不會大量開啓佔用資源。
不過 SilverPilot 免費版本功能限制較多,沒有 real time status 和沒有無限 SSH 用戶 (暫不清楚免費版本可以開多少),但如果不是賣出去商業用的話問題不大。(不過也希望能開放 SSH 吧,因為始終是用戶自己的 server,希望有較大控制權)

ServerPilot Apdex score

嘗試過 ServerPilot 的 Support 都不錯,除了在它的網頁有詳細的 Document 外,初時使用時,它的 PHP 並沒有 build-in “HTML Tidy extension”,所以 W3 Total Cache 並不能 minify JS 和 CSS,send 了一封 email 去查詢後,2-3 天已有回復並已經解決,server 會自動 update 去支援 HTML Tidy extension,你不用做任何事,just get it done. 非常方便。

結論比較

VestaCP 無錯是自由度較高,搬遷較易,nginx + apache 極簡單就可以設定,但預設設定不太適合 VPS,需要自行更改。

ServerPilot 和 Apple 產品相似,簡約, just get it done 但沒有太大自由度,所以東西都已經幫你設定為最佳狀態;代價是比較受制於人。
而這是一個較新的產品,所以有些功能需要遲些才補上(如 backup,多用戶控制等)。

Virtualmin 是最成熟和簡單,不追求極致效能的可以選擇這個,而且內置異地 backup (FTP, SCP, Amazon) 等等,都是一個很好的選擇。


同場加映:Server monitor

一般 CP 都會有顯示 CPU / Ram / Disk usage,不過資訊卻有限,如那一個 process 佔用最多資源等等都不會顯示,所以另安裝 monitor software 會較好。

New Relic

企企在網上時常看到 New Relic 的廣告,而且 W3 Total Cache 已經內置了 New Relic,所以試用 VPS 時就順道安裝 New Relic.
New Relic 分兩部份,一部份是 Server Monitor,另一部份是 Application Monitor

new relic server

Server Monitor 顧名思義就是監測 CPU / Ram / Disk IO 等等,亦可以看到那一個 process 佔最多 ram,最多 CPU time,不過只可以以 30min 為間格來看,看不到某一刻那個 process 才是佔用資源的源兇(相信要收費版才可以看到)
而 Application Monitor 就以 PHP, JAVA, PYTHON, .NET 等等為對像,可以看到那一個 process 用 CPU 時間最多,而且會以處理速度為這個 application 評分,稱為 “Apdex score”,以 1.0 為滿分,越接近 1 代表處理速度越快,user 等待時間越少。

new relic application

New Relic 有另一個好處是它有 iOS App,可以在街上隨時 monitor server 的狀況,所以如果有 VPS 都建議安裝這個。

SeaLion

SeaLion 是在看 ServerPilot 的 Twitter 時看到,這是另一個 Server Monitor 程式,這個程式主要是用 top / free / ps auxww 等等指令來將結果傳回 SeaLion 的 Server,如果 SeaLion 發現數據異常的話就會通知你,你可以在 SeaLion 網站上看到那一個 Process 用 CPU 用得最兇,方便 debug.

不過 SeaLion 佔 ram 佔得較兇,用了約 120 – 130 MB ram,差不多是 ServerPilot 的 1/3,不過資訊可以和 New Relic 互補,所以如果有 free memory 都可以使用,以備不時之需。

sealion report
Sealion 以 top 等指令監控為主
  • 此篇文章是否有收受廠商撰寫文章費用、行銷費用:
  • 此篇文章內測試商品來源:自費購買