国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

對優化Ruby on Rails性能的一些辦法的探究

2019-10-26 19:28:28
字體:
來源:轉載
供稿:網友

1.導致你的 Rails 應用變慢無非以下兩個原因:

    在不應該將 Ruby and Rails 作為首選的地方使用 Ruby and Rails。(用 Ruby and Rails 做了不擅長做的工作) 過度的消耗內存導致需要利用大量的時間進行垃圾回收。

Rails 是個令人愉快的框架,而且 Ruby 也是一個簡潔而優雅的語言。但是如果它被濫用,那會相當的影響性能。有很多工作并不適合用 Ruby and Rails,你最好使用其它的工具,比如,數據庫在大數據處理上優勢明顯,R 語言特別適合做統計學相關的工作。

內存問題是導致諸多 Ruby 應用變慢的首要原因。Rails 性能優化的 80-20 法則是這樣的:80% 的提速是源自于對內存的優化,剩下的 20% 屬于其它因素。為什么內存消耗如此重要呢?因為你分配的內存越多,Ruby GC(Ruby 的垃圾回收機制)需要做的工作也就越多。Rails 就已經占用了很大的內存了,而且平均每個應用剛剛啟動后都要占用將近 100M 的內存。如果你不注意內存的控制,你的程序內存增長超過 1G 是很有可能的。需要回收這么多的內存,難怪程序執行的大部分時間都被 GC 占用了。

2 我們如何使一個 Rails 應用運行更快?

有三種方法可以讓你的應用更快:擴容、緩存和代碼優化。

擴容在如今很容易實現。Heroku 基本上就是為你做這個的,而 Hirefire 則讓這一過程更加的自動化。其它的托管環境提供了類似的解決方案。總之,可以的話你用它就是了。但是請牢記擴容并不是一顆改善性能的銀彈。如果你的應用只需在 5 分鐘內響應一個請求,擴容就沒有什么用。還有就是用 Heroku + Hirefire 幾乎很容易導致你的銀行賬戶透支。我已經見識過 Hirefire 把我一個應用的擴容至 36 個實體,讓我為此支付了 $3100。我立馬就手動吧實例減容到了 2 個, 并且對代碼進行了優化.

Rails 緩存也很容易實施。Rails 4 中的塊緩存非常不錯。Rails 文檔 是有關緩存知識的優秀資料。不過同擴容相比,緩存并不能成為性能問題的終極解決方案。如果你的代碼無法理想的運行,那么你將發現自己會把越來越多的資源耗費在緩存上,直到緩存再也不能帶來速度的提升。

讓你的 Rails 應用更快的唯一可靠的方式就是代碼優化。在 Rails 的場景中這就是內存優化。而理所當然的是,如果你接受了我的建議,并且避免把 Rails 用于它的設計能力范圍之外,你就會有更少的代碼要優化。

2.1 避免內存密集型Rails特性

Rails 一些特性花費很多內存導致額外的垃圾收集。列表如下。

2.1.1 序列化程序

序列化程序是從數據庫讀取的字符串表現為 Ruby 數據類型的實用方法。

class Smth < ActiveRecord::Base serialize :data, JSONendSmth.find(...).dataSmth.find(...).data = { ... }            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西乌珠穆沁旗| 嘉义县| 绥芬河市| 石景山区| 临安市| 凌源市| 南岸区| 崇义县| 藁城市| 鲁山县| 延长县| 吴桥县| 莱州市| 延长县| 靖西县| 邵阳市| 珲春市| 井冈山市| 东乡县| 乾安县| 长子县| 营山县| 宁陵县| 宽甸| 会昌县| 抚顺县| 沙坪坝区| 车致| 阳春市| 林芝县| 礼泉县| 宁南县| 临武县| 资阳市| 桦南县| 大化| 如皋市| 剑阁县| 麟游县| 剑阁县| 大荔县|