国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Windows系統(tǒng)中RubyonRails4生產(chǎn)環(huán)境搭建

2016-03-22 22:09:31熊棠唐勇
電腦知識與技術 2016年2期
關鍵詞:線程進程頁面

熊棠 唐勇

摘要:在Windows server 2008 R2 Enterprise系統(tǒng)中,使用SQLServer2008數(shù)據(jù)庫,Ruby on Rails 4為開發(fā)框架,Puma為應用服務器,Apache 2作為Web服務器,構建負載均衡的多線程服務生產(chǎn)環(huán)境。

關鍵詞:Windows 2008;Ruby on Rails 4;Puma;生產(chǎn)環(huán)境

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)02-0216-03

Ruby on Rails(簡稱“Rails”)是一個Web開發(fā)框架,使用Ruby編程語言開發(fā)。自2004年出現(xiàn)之后,Rails就迅速成為動態(tài)Web應用開發(fā)領域功能最強大、最受歡迎的框架之一。[1]因為社區(qū)資源和Ruby自身的原因,雖然可以把應用部署到Windows系統(tǒng)中,但大量的Rails工具和共享知識都假設其使用的環(huán)境是基于UNIX操作系統(tǒng)[2];隨著Ruby2.0和Rails4的發(fā)布,在Windows中搭建Rails4生產(chǎn)環(huán)境成為一個有待解決的問題。

1 相關軟件

在Windows server 2008 R2 Enterprise中,考察數(shù)據(jù)庫、編程語言、開發(fā)框架、應用服務器、Web服務器等組件以構建一個Rails4生產(chǎn)環(huán)境。

1.1 數(shù)據(jù)庫

Rails框架中,使用ActiveRecord來處理數(shù)據(jù)和業(yè)務邏輯。ActiveRecord實現(xiàn)了Martin Fowler在《企業(yè)應用構架模式》中提出的Active Record模式,即對象中既有持久存儲的數(shù)據(jù),也有針對數(shù)據(jù)的操作。[3]即是說,在Rails框架下開發(fā)的應用不需要直接操作數(shù)據(jù)庫,而是通過不同的數(shù)據(jù)庫“適配器”將涉及數(shù)據(jù)的操作“翻譯”成針對不同數(shù)據(jù)庫的語句。因此,對同一個應用,可以選擇不同的數(shù)據(jù)庫以適應不同的環(huán)境。為了應付中等規(guī)模的Web應用及便于操作,選用 SQLServer2008 作為數(shù)據(jù)庫。

1.2 編程語言及開發(fā)框架

RailsInstaller是最快的從零開始開發(fā)Ruby on Rails應用的部署方法,支持Windows和Mac平臺。[4] RailsInstaller3.0.0包含Ruby2.0.0、Rails4.1、tiny_tds0.6.2 x86-mingw32、activerecord_sqlserver_adapter4.1.0;其中tiny_tds和activerecord_sqlserver_adapter用于Rails應用連接SQLServer數(shù)據(jù)庫。上述軟件均為32位,如需64位,須逐個手動安裝。

1.3 應用服務器

Puma是專門針對Rails的并發(fā)服務器,具有支持多線程、內(nèi)存占用率低、運行穩(wěn)定等優(yōu)點。在基于UNIX的系統(tǒng)下,還支持cluster模式。

1.4 Web服務器

為了便于快速部署,選用Apache2.2作為Web服務器。Apache具有擴展模塊全面、運行穩(wěn)定的優(yōu)點;但是Apache處理請求是阻塞型的,相對于Nginx的異步非阻塞方式,在高并發(fā)下性能會下降很大。如果對網(wǎng)站性能有較高要求,可以采用Nginx或Nginx+ Apache的方式。

2 安裝步驟

2.1 安裝數(shù)據(jù)庫

SQL Server 2008直接安裝即可,需注意sa密碼不可包含ruby中的特殊字符,如@、#等。啟動數(shù)據(jù)庫后打開Sql Server management studio新建數(shù)據(jù)庫,庫名必需與應用中database.yml定義的庫名一致。

2.2 安裝編譯環(huán)境及開發(fā)框架

直接以默認方式運行railsinstaller-3.0.0.exe即可完成安裝。在命令行中進入應用目錄,鍵入rails s 啟動app server進入開發(fā)環(huán)境。如互聯(lián)網(wǎng)通暢,Bundle會自動下載安裝缺失插件。如果是封閉內(nèi)網(wǎng)環(huán)境,可以根據(jù)報錯提示,到互聯(lián)網(wǎng)手動下載所需Gem安裝包保存到本地,然后在命令行中鍵入gem install --local XXXX.gem安裝。如已連接互聯(lián)網(wǎng),但不能訪問境外服務器https://rubygems.org,可使用文本編輯工具打開Gemfile文件,修改第一行:

2.3 安裝Puma

workers稱為工作者,一個工作者即為一個進程。threads稱為線程,即一個進程允許的線程,設置成最小為0,最大為threads_count定義的值。工作者消耗更多的內(nèi)存,線程消耗更多的CPU運算,增加工作者或線程都能提高并發(fā)出理能力。在命令行中,進入puma.rb所在路徑,運行以下命令啟動Puma:

start bundle exec puma -C puma.rb

3.1.3 配置Apache

Rails4生產(chǎn)環(huán)境下默認不處理靜態(tài)文件;所有靜態(tài)文件全部由Web服務器處理以提高響應。因此應將public目錄下的所有目錄均配置為由Apache直接處理,以public/images為例,首先將網(wǎng)站根目錄設置為public目錄,然后在httpd.conf中加入以下語句:

ProxyPass /images !

3.2 調(diào)優(yōu)

3.2.1 Rails調(diào)優(yōu)

在內(nèi)容豐富的動態(tài)頁面,如首頁、列表頁上,存在著大量分散的內(nèi)容需要從數(shù)據(jù)庫中讀取。用戶訪問一次頁面,可能意味著多次數(shù)據(jù)庫查詢。而實時性的要求,使得頁面緩存等技術難以應用。在動態(tài)生成的頁面中,不同的內(nèi)容要使用不同的緩存方式和過期時間,這種緩存機制叫做“片斷緩存”。

首先要配置config/environments/production.rb文件,開啟緩存。

config.cache_classes = true

config.cache_store = :file_store,"<緩存文件的物理路徑> "

默認情況下,緩存方式是mem_cache_store,即Ruby進程中把緩存保存在內(nèi)存中。這種方式不支持跨進程讀取,因此采取文件方式緩存。

片斷緩存應用于視圖文件,在相應的erb文件中需要緩存的位置作如下處理:

<%cache do%>……<%end%>

cache塊結構內(nèi)的代碼即被緩存的內(nèi)容。在cache后加上參數(shù)緩存名,可實現(xiàn)一次緩存多次讀?。?/p>

<%cache ‘<緩存名> do%>……<%end%>

要使緩存在一段時間之后自動過期,如一天為例:

<%cache expires_in:1.day do%>……<%end%>

還可以使用expire_fragment手動清理緩存,這種情況下需要對cache稍作修改:

<%cache ‘<緩存名> ,skip_digest:true do%>……<%end%>

然后在可能對頁面內(nèi)容產(chǎn)生改變的動作中使用緩存過期:

expire_fragment ‘<緩存名>

手動過期和自動過期也可以同時使用:

<%cache ‘<緩存名> ,skip_digest:true, expires_in:1.hour do%>……<%end%>

使用片斷緩存能夠大大減少數(shù)據(jù)庫開銷,提高響應。

3.2.2 Puma調(diào)優(yōu)

增加Puma工作者可以提高并行處理能力,但Windows不支持多進程,worker只能設置為0。因此只能以多個Puma服務器的方式增加服務進程。

創(chuàng)建配置文件puma.3001.rb、puma.3002.rb、puma.3003.rb……puma.3010.rb,每一個配置文件除端口外,其余配置相同。創(chuàng)建批處理文件,內(nèi)容如下:

cd <配置文件目錄>

運行批處理文件啟動10個Puma進程,一個線程服務一個請求,并發(fā)處理能力等于10*線程數(shù)。這樣就實現(xiàn)了Windows環(huán)境下多進程多線程的Puma服務器。

3.2.3 Apache調(diào)優(yōu)

4 壓力測試

應用首頁由超過20個獨立的動態(tài)部分組成,頁面長度為2KB左右。使用測試工具ApacheBench對應用首頁做壓力測試。測試方法為分別使用并發(fā)數(shù)200、500、1000、1200、1500完成5000個訪問,每個并發(fā)數(shù)測試10組取算術平均值;考察總耗時、失敗數(shù)、每秒完成請求數(shù)、用戶平均請求等待時間4個指標,記錄如下:

由上表可知,在1500的并發(fā)訪問下完成了全部5000個請求,用戶平均請求等待時間仍低于3秒,屬于可用的范圍。

5 結束語

經(jīng)過上述安裝、配置及優(yōu)化,Windows平臺下Rails4應用完全能夠用于中等規(guī)模的網(wǎng)站生產(chǎn)線。通過進一步優(yōu)化配置,如優(yōu)化SQL語句、異步加載、使用數(shù)據(jù)庫集群、采用Nginx服務器、memcache緩存服務器替代硬盤文件緩存、部署靜態(tài)文件服務器等措施能夠使網(wǎng)站的可用性得到更大的提升。

參考文獻:

[1] Michael Hartl. Ruby on Rails教程[M/OL]. 安道, 譯. 3版. [2015-12-11].https://selfstore.io/products/189.

[2] Sam R. Web開發(fā)敏捷之道[M]. 駱古道, 譯. 4版. 北京: 機械工業(yè)出版社, 2012.

[3] Vijay Dev, Xavier Noria. Ruby on Rails指南[EB/OL]. [2015-12-11]. http://guides.ruby-china.org/active_record_basic.html.

[4] RailsInstaller[DB/OL]. [2015-12-11]. http://railsinstaller.org/cn.

猜你喜歡
線程進程頁面
大狗熊在睡覺
刷新生活的頁面
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
淺談linux多線程協(xié)作
社會進程中的新聞學探尋
民主與科學(2014年3期)2014-02-28 11:23:03
我國高等教育改革進程與反思
Linux僵死進程的產(chǎn)生與避免
Linux線程實現(xiàn)技術研究
同一Word文檔 縱橫頁面并存
淺析ASP.NET頁面導航技術
江津市| 洛南县| 商城县| 汤原县| 兴城市| 弥渡县| 中超| 金沙县| 克山县| 巴青县| 阳高县| 汕头市| 云和县| 黄山市| 嘉禾县| 兴海县| 乌兰浩特市| 泗洪县| 将乐县| 兰溪市| 呼伦贝尔市| 石楼县| 滦南县| 长白| 遵义市| 武冈市| 竹山县| 岢岚县| 会泽县| 抚州市| 拜城县| 阳朔县| 永济市| 张家界市| 天台县| 玉树县| 孙吴县| 岱山县| 浦城县| 南靖县| 屯留县|