是這樣的,現在CPU越來越快,但是硬碟似乎沒有像CPU那樣一直有新的版本.
我有看到文章提到,目前很多主機的瓶頸是來自於SATA硬碟的IO,CPU太高只是浪費.
所以我想請教一下各位前輩們,我需要一台跑購物車的主機,
我該如何評估之後的效能瓶頸會是來自於硬碟的IO?還是CPU的問題?
因為預算有限,想問一下,
"四核心+7200轉sata做raid1" vs "雙核心+15k轉sas做raid1",
這兩種哪種的效能表現會比較好呢?
謝謝大家
以你的需求不用去考量此問題,反而要比較考量頻寬的問題.
如果CPU或IO持續過高.恭喜你不是程式寫錯就是中標了
我知道程式寫的好壞,確實會對主機耗用資源程度有不同的影響,
只是在想說,針對這樣的使用需求,哪個會是比較合適的,
或是從哪知道當正常使用下(也就是沒有程式問題考量),
我該怎麼去了解是IO問題造成,還是CPU資源不夠使用...
謝謝大家
假如你的網站有如PChome般中大型的規模;可以稍微提高CPU的地位。
其他一般小型網站要注意的依次為:頻寬 儲存裝置 記憶體 最後是CPU....
目前的儲存裝置效能永遠跟不上 CPU & RAM!因此強化儲存裝置才是問題重心。
一般至少也要 3顆企業級的 SATA 作 RAID5 吧。萬五轉的SAS?你是說萬五轉的SCSI硬碟?有這個當然最好,不過要多花萬把塊買片SCSI控制卡來配用。
SCSI硬碟所費不貲,似乎你的預算還蠻多的:)那麼:
伺服器主機板+Xeon處理器+大量的RAM+萬五轉的SCSI或萬轉SATA硬碟為RAID5。。。這樣的伺服器穩定度及效能都很OK的。
PC級主機板目前 P5Q-EM 這片還蠻合你需求的,它是 ICH10R + 16G RAM。
說到穩定度,去年10月到今年6月,高雄皇家俱樂部有個傢伙手上一片P5Q Deluxe因為故障維修換良品現在手上那片良品已是第三片!很不幸的那傢伙就是我。
P5Q的評價不錯,我也喜歡這系列但不幸就是不幸怎也躲不掉。
"網頁伺服器"在硬體選擇上要更加謹慎。除穩定性的要求外,貨車跟跑車不宜混用;好比拿跑車載貨,貨車參加 F1。解決儲存裝置瓶頸為先,CPU根本不是問題。
汗|||
Seagate Cheetah 15K.5 硬碟。。。太久沒逛各大論壇了,知識有脫節很大!
如果是要跑 Windows
效能可以透過效能監視器去觀察是來自哪裡
我覺得應該考慮的是CPU和記憶體和頻寬....
至於硬碟的IO效能應該是還好,購物車系統不是像需要讀取大量的硬碟資料的系統(影音才需要)。
購物車資料量大時,就牽扯到資料庫的效能。資料庫效能依照硬體來取決的話,是在cpu速度及記憶體大小。
所以"四核心+7200轉sata做raid1",依照你的需求來說應該是這cp值比較高。
ps:記憶體要多,資料庫吃很大的記憶體(MSSQL至少是這樣)。
如果照"四核心+7200轉sata做raid1" vs "雙核心+15k轉sas做raid1",去分的話,
後者效能比較好。尤其是當FileServer最明顯。
以上有誤請指教
smalllun,可以請下一下嗎?您提到 資料庫效能依照硬體來取決的話,是在cpu速度及記憶體大小,但是資料庫不是都在撈取資料嗎?這樣是硬碟io會比較重要?還是他是cpu運算比較多呢?謝謝大家
以MS-SQL來說,他會把所查詢或運算的資料都載進去記憶體內,所以讀取硬碟的效率不高....如下圖:(姑且不論以下程式或資料庫正規劃的好不好。ps:資料庫檔案1G。)
http://smalllun.blog.ithome.com.tw/gallery/1734/previews-med/1734-13122.jpg
工作管理員實體記憶體使用率,如下圖:
http://smalllun.blog.ithome.com.tw/gallery/1734/previews-med/1734-13121.jpg
我還是認為依照你的需求,在cpu及記憶體需求量比較大....
好像可以用 SCSI 的硬碟,硬碟的讀取速度和傳輸速度會比較快,
不過現在的 SCSI 硬碟和 SATA 或是 SAS 的硬碟的傳輸速度誰比較快小弟就不知道了。
以前在 MS-Dos 5.0 和 MS-Dos 6.22 的時代,
SCSI 的硬碟是比 ISA的硬碟要快很多,不過也貴很多就是了。
以下是 google 的資料庫,您可以參考看看。
http://www.google.com.tw/search?hl=zh-TW&q=scsi+%E7%A1%AC%E7%A2%9F&meta=&aq=1&oq=SCS
http://0rz.tw/KLdCb
http://www.google.com.tw/search?hl=zh-TW&q=sata%E7%A1%AC%E7%A2%9F&meta=&aq=0&oq=SATA
http://0rz.tw/gcb5R
http://www.google.com.tw/search?hl=zh-TW&q=sas%E7%A1%AC%E7%A2%9F&meta=&aq=1&oq=SAS
http://0rz.tw/YVPri
SAS 卡基本上有 SCSI 指令,效能會比較高,之前有跟立志的工程師聊過,簡單來說,大量I/O存取時,SAS會讓妳用起來的感覺是稍微lag但是還是感覺出有在動,但SATA是感覺像當機一樣,我自己是很注重I/O效能其次才是CPU,目前我用 SCSI 320 就感覺差很多了〈因為沒錢換SAS卡 ~"~〉,SCSI 平均傳輸約90MB ~ 100MB,但 Sata 只有60MB ~ 80MB左右而已,給妳些經驗參考
我是認為硬碟應該不需要那麼好。
因為前面就有大大說了,
“目前的儲存裝置效能永遠跟不上 CPU & RAM!因此強化儲存裝置才是問題重心。”
我是建議強化CPU+RAM, 使用 RamDisk ,這樣不但大大降低硬碟的耗電與熱,還能超級提升資料讀取的效能。
建議把該資料庫的資料檔案存放在 RamDisk 上。
網路上有很多關於 Ram Disk 的相關資料,
RamDisk 的速度是神級的快阿!
只是不知道您的作業系統能否使用,
另外, 使用 RamDisk 的話,
記憶體需求則是建議“另外”再加上2G的容量,
如果說您想要連網頁或其他資料也置入的話,相對的要提高容量....
不過這邊提醒您一下:
RamDisk 在您關機的時候, 資料會不見,
所以建議您的所有資料還是建置在硬碟上,
再伺服器上線之前再將資料複製到 RamDisk,
離線後先將資料備份回應碟再行重開機。
我個人在家架伺服器的方法是這樣,但是不知道業界的狀況能否套用呢...
想要知道效能瓶頸最簡單的作法就是 跑效能統計數據(前面有人提過了,各大作業系統都有類似的功能)
這是最直接,最正確的
不過依照您這個case,可能是新建置的購物車,所以沒有什麼數據可以參考
但建議可以找一些類似系統來參考,一定有不小幫助
RAM DISK的方案我不是很建議,因為風險很大
購物車會有訂單資料,複雜的還會包含庫存、客戶等等非常重要的資料
只要資料遺失個一兩筆,就準備被客戶罵吧
若甚至資料庫損毀,我想你在這間公司也不用繼續玩了
除非你有很完整的配套措施。
資料庫方面,到底是對哪項硬體需求量較大,我覺得很重要的幾點
資料量
當你這個資料庫size很小時(100MB以內都算小吧。但100MB就已經可容納幾十萬筆資料不是問題),對硬碟的要求鐵定不會太多
甚至大多數的資料在第一次執行後,就全部都存放在RAM中了
所以RAM的容量很重要,一定要夠用,否則就會有大量的pagefile交換,
這樣一來,即使原先的瓶頸不在HD,也會因為大量的Pagefile交換,使得瓶頸發生在HD
HD I/O量,I/O量又跟系統功能需求、程式寫法好壞、瀏覽者的使用頻率有關
以上這些都要去評估,才能知道夠不夠用
DB在運作時,依照操作可分為 select 跟 其他寫入動作insert update delete
簡單說明一下DB的運作流程吧
以上四種DML指令,幾乎都會跟select有關 ,只要有select就會有讀取
但資料庫在接收DML指令後,並不會都有HD I/O,怎麼說呢? 請看下去
通常只有第一次執行時,才會對硬碟的DB資料檔讀取資料,之後都會載入RAM中。
對於常用的JOIN等等,都一定是把需要用的table資料(不一定是全部)存入RAM,才會開始JOIN。幾乎所有的JOIN、select等資料庫運作,全部都是在RAM中完成。
而後續大多數的HD I/O是發生在 DB交易記錄檔的地方,也就是在做insert、delete、update時的I/O,而不是DB資料檔本身,此時寫入的不是HD中的DB資料,而是在RAM中的DB資料。
那什麼時候會把insert、delete、update的資料寫入存在HD的DB資料檔?
是在每隔一段時間的DB check point發生時,或DB服務關閉時,才會真正寫入HD。
checkpoint是很多分鐘才發生一次,每種DB都不太一樣。
在checkPoint還沒發生之前,所有insert、update、delete後的資料,都會存放在RAM中。另外在交易記錄檔中也會有相關動作的紀錄,作為意外狀況時的比對。
所以在HD中與DB相關的東西,一共是有兩個。
而這兩個發生HD I/O的時間點跟頻率都不太相同
若要有最佳的DB效能,請將這兩個分別置於不同的儲存體上。
3.CPU的能力,通常不是DB所care的,因為DB是負責儲存資料的地方
他的主要任務並不是執行運算。
主要用CPU能力的地方,應該是你的Web應用程式
當然目前有不少DB是允許寫T-SQL程式的,不過我不建議這樣做,因為DB的執行程式的引擎不可能很好,若真的有這狀況,應該是程式開發者的問題,或DB使用者的問題。
**依照您寫的主機規格
似乎計畫將Web應用程式 及DB存放在一起
那應該是屬於小型的購物車系統網站
我認為呢,CPU雙核已經很夠用了,若有分析報表系統,再考慮升等四核心吧
記憶體,尤其你是Web應用程式、DB存放在一起,所以絕對要非常夠,這其實才是這個系統效能的要角,建議要有4GB
儲存體,您提的硬體規格有點兩極化,且您說預算有限....
那我建議一組中間的吧,陣列卡不要選中價位及更低的品牌,因為效能鐵定有不小的差異
此時無論你HD選多好,也會因為陣列卡的演算法不好,導致效能低落。
硬碟應該還是SATA就夠了,備品多留一點,找企業版、cache大的
用SCSI SAS真的太傷了,而且需考量未來的維修替換,除非預算非常充足。
且若要用SCSI SAS,那該主機應該要有相對等的環境,比方空調等等。不然號稱高等的SCSI硬碟會壞的比SATA還要快很多,保證(親身經驗)
另外如果計畫只有一組儲存體的話,陣列建議升等成RAID-5 或 6。
至少能把多工性給提升。一張好的陣列卡,也能夠降低CPU對於資料存取的工作。**
資料庫裡面的運算,跟SCSI、SAS的運算沒有關係
資料庫是軟體,SCSI、SAS是硬體
資料庫的運算一定是請CPU幫它做的
SCSI、SAS是幾乎本身晶片做的
SATA是部分請CPU做的
無論是 網站、資料庫、應用程式
全部都很要求記憶體的量,所以記憶體絕對不要省
php、html
php是有運算的程式,cpu跟ram都會比較重要
html只要在意ram就夠了
lghkking,可以請教您幾個問題嗎?
===>> 如果資料是很久才寫入HD,那麼突然當機,是否資料也很容易遺失?這樣跟RAM DISK道理似乎有像不是?
===>> 不好意思!!不太了解您指的"兩個",分別是指?
謝謝大家
補充: 市場行情可能跟作者Mary的常識有一些落差, 不妨跳開這些迷思, 建議直接詢價-->比價, 最後結果可能會發現硬體採購反而是單純的!!
恕晚輩說一句
其實可以使用SSD硬碟
寫入速度稍慢一些
但讀取速度非常快
(缺點就是價錢高)
html、php 應該是記憶體吃比較重
(還有就是SERVER的平台也很重要)
如果能用建議用2008 或 LINUX去架
選對平台差很多....
是呀!
選對平台差很多!!
去架個FreeBSD吧!
記憶體掛個8G。
現行的PC及Server隨意一台都很夠用。
就不用考慮CPU及硬碟之間的瓶頸...
若單以硬體來說,
在架構上都是週邊設備配不上CPU速度,
若要選購,個人比較偏向需求導向。
頻寬是王道! 做購物車就是要做電子商務,
程式寫的好,漏洞及Bug少,系統及硬體穩,反而比較重要。
其實,也可以不用考慮那麼多,如果你的資料庫是叢集系統(目前比較OK的是MS SQL及Oracle,MYSQL的Cluster評價不好)及Web也是叢集系統,那對系統就不用怕CPU及IO的問題,網路部分可以針對線路購買頻寬管理器及透過DNS來分配網路負載,我想應該就差不多了,用Cluster有幾個好處,其中之一,也是你目前的需求,主機附載不夠,再添加主機就好,希望這樣回答對你有幫助
補充一下,如果用mysql,建議使用讀寫分離的方式,網路上有許多方案,關於讀寫分離的可以查詢一下,不建議用mysql上的cluster.