ruby on rails作為web開(kāi)發(fā)框架,通常被認為性能很差,并因此被置疑其前景。JavaEye2.0網(wǎng)站使用ruby on rails開(kāi)發(fā),已經(jīng)上線(xiàn)運行一個(gè)月了,通過(guò)這一個(gè)月的運行,我們可以對ruby on rails的性能有一個(gè)初步的認識。
JavaEye2.0運行的服務(wù)器硬件配置:
JavaEye2.0的軟件運行環(huán)境:
在JavaEye2.0剛剛上線(xiàn)的時(shí)候,啟動(dòng)了50個(gè)FastCGI ruby進(jìn)程,發(fā)現大量空閑FastCGI進(jìn)程,隨后根據運行情況,不斷減少進(jìn)程數量,目前只啟動(dòng)了20個(gè)FastCGI進(jìn)程,因此負載量還是很輕的。
服務(wù)器的平均CPU使用率在繁忙的時(shí)候,大概15%左右,MySQL數據庫繁忙的時(shí)候平均每秒發(fā)送超過(guò)100條SQL語(yǔ)句,24小時(shí)平均每秒發(fā)送45條SQL語(yǔ)句。硬盤(pán)IO非常少,每秒讀硬盤(pán)非常低,每秒寫(xiě)硬盤(pán)平均200KB左右(操作系統進(jìn)行了充分的disk cache,MySQL Cache使用率也幾乎滿(mǎn)了)。
通過(guò)上面這些服務(wù)器運行情況,可以大致得出一個(gè)結論,目前JavaEye2.0網(wǎng)站在這種低端硬件上面的負載量非常輕,對硬件消耗不大。
目前JavaEye2.0網(wǎng)站使用了Google Analytics來(lái)統計網(wǎng)站的訪(fǎng)問(wèn)量。根據這一個(gè)月的統計量,周一到周五一般每天動(dòng)態(tài)網(wǎng)頁(yè)PageView超過(guò)5萬(wàn),周六周日和國慶期間每天動(dòng)態(tài)網(wǎng)頁(yè)PageView超過(guò)2萬(wàn)。但是根據對rails的production.log進(jìn)行統計,24小時(shí),rails正常處理的、狀態(tài)為200 OK的Action動(dòng)態(tài)請求數量有12萬(wàn)多。也就是說(shuō)網(wǎng)站每天正常處理動(dòng)態(tài)請求超過(guò)了12萬(wàn)。
由于網(wǎng)站的訪(fǎng)問(wèn)量大部分集中在早上9.00到晚上9.00這12個(gè)小時(shí)的范圍內。因此可以大致粗略的認為12小時(shí)處理12萬(wàn)動(dòng)態(tài)請求,平均每小時(shí)處理1萬(wàn)動(dòng)態(tài)請求,也就是說(shuō)平均每秒處理3個(gè)動(dòng)態(tài)請求。
觀(guān)察production..0X秒,少量請求是0.X秒,如果我們按照平均每個(gè)請求處理時(shí)間為0.1秒計算,那么一個(gè)FastCGI進(jìn)程每秒可以處理10個(gè)請求,從目前JavaEye2.0網(wǎng)站的運行狀況來(lái)看,支撐每天60萬(wàn)動(dòng)態(tài)請求,看來(lái)是毫無(wú)問(wèn)題的。所有的這些還是沒(méi)有對程序進(jìn)行必要的Cache優(yōu)化所取得的,如果對程序進(jìn)行充分的優(yōu)化,達到每天支撐100萬(wàn)動(dòng)態(tài)請求也是可以做到的。
如果一個(gè)網(wǎng)站能夠到達每天50萬(wàn)動(dòng)態(tài)請求,已經(jīng)是一個(gè)相當大的網(wǎng)站了,對于那些企業(yè)應用來(lái)說(shuō),訪(fǎng)問(wèn)量也往往達不到這么大的流量,因此從JavaEye2.0網(wǎng)站的運行情況來(lái)看,ruby on rails在性能方面并不會(huì )成為一個(gè)問(wèn)題。
聯(lián)系客服