`

[筆記] 我觀 Roobin的「在Linux平台上安装和配置Ruby on Rails详解」

阅读更多
Roobin 寫了一篇 在Linux平台上安装和配置Ruby on Rails详解,裡面不只寫到一些基本的程式碼 make 的基本技巧,還提出許多性能上面的議題,實在是一篇好文章,下面有一些我看這篇文章所作的筆記記錄下來。

1. GC Path
Ruby解析器的GC Patch 這段介紹
根据他的评测表明,使用GC Patch并且设置了合适的GC参数之后,Ruby GC次数下降到原来的十分之一,有效的提高了Ruby在高并发情况下的吞吐能力
還有
这里值得一提的是,使用GC Patch和设置相应的参数之后,每个Ruby FCGI进程耗用的驻留内存是原来的两倍,因此除非你的服务器物理内存非常多,否则要慎用,避免Ruby FCGI吃光你的服务器内存。
這裡從來不知道有差,真的是長了智慧,

2. 請多安裝 mysql-ruby
rails发行包中已经自带纯ruby的MySQL数据库适配器,然而对于生产环境来说,我们仍然应该下载安装C版本的数据库适配器,以达到更好的性能。
我也聽說 ruby-mysql 比 mysql-ruby 來得慢。

3. 安裝 MySQL Ruby Patch
Stefan Kaes在这篇博客中提供了MySQL适配器的patch文件,根据他的评测,可以提高数据库访问30%左右的性能,因此建议用户下载使用该patch文件,那么安装过程改为:
tar xzvf mysql-ruby-2.7.3.tar.gz
cd mysql-ruby-2.7.3
patch < ../ mysql-ruby-2.7-less-string-copies-in-each-hash.diff ruby extconf.rb --with-mysql-dir=/opt/mysql5 make && make install

可以試試的 Patch。
4. 啟動 Fastcgi 數量要慎選
一般而言,不需要启动数量很多的FCGI进程,一个FCGI进程类似于一个Java应用服务器,启动10个FCGI类似于启动10个Java应用服务器了。由于Web Server和FCGI请求处理的网络速度差异,以及Web Server需要处理大量静态资源,经验数据表明:10个Web Server并发连接,仅仅需要1个FCGI并发进程。因此10个FCGI进程可以支撑100个Web Server的并发请求了,大约可以达到每天30万PageView。不过如果考虑到峰值并发,可以适当增加FCGI进程数量。
這裡的經驗法則很值得參考。

5. OS 選擇
另外我个人也不建议用ubuntu或者gentoo作Linux Server的OS来跑,作为一个服务器操作系统来说,要求是稳定可靠,硬件,软件,应用的兼容性好。

當然啦,我對於 OS 的選擇沒啥意見啦,這是使用者口味的不同,所以不加評論。我只能說我喜歡用 Ubuntu 來跑 Server,而樂多跑 Gentoo Linux 來跑得蠻穩的。大家都是 Linux ,Kernel 都一樣,使用套件也都差不多,穩不穩定,還有相容度好不好只是管理者功力的問題。

延伸閱讀
  1. Railsbench 官方網站
  2. MySQL-Ruby
  3. Stefan Kaes 提到的 Ruby-MySQL Patch


分享到:
评论

相关推荐

    ruby on rails环境搭建学习笔记;passenger+nginx环境配置

    ### Ruby on Rails 环境搭建与 Passenger+Nginx 配置详解 #### 一、Ruby on Rails 开发环境搭建 在进行 Ruby on Rails 的开发之前,首先需要完成一系列的基础软件安装工作,包括但不限于 Ruby 语言环境、Rails ...

    ruby on rails入门

    - **安装 Ruby 和 Rails**:首先确保 Ruby 和 Rails 已经正确安装在你的计算机上。可以通过命令行工具执行 `ruby -v` 和 `rails -v` 来验证安装情况。 - **创建第一个 Rails 应用**:使用命令 `rails new myapp` ...

    Ruby-on-Rails-101:Ruby on Rails 笔记摘自 WDI HKV 和其他来源。 比如,lynda的在线Rails教程

    **Ruby on Rails 101 知识点详解** Ruby on Rails(简称Rails)是一种基于Ruby编程语言的开源Web开发框架,它遵循“Don't Repeat Yourself”(DRY)原则和“Convention over Configuration”(CoC)理念,使得...

    web敏捷开发rails笔记

    ### Web敏捷开发与Rails实践详解 #### 一、Rails简介及环境搭建 Rails是一个用于Web开发的开源框架,它基于Ruby语言,强调简洁性、生产力和开发者效率。Rails通过约定优于配置的原则,使得开发者能够快速地搭建Web...

    Windows下Redmine-1.3.0安装笔记

    本文档将详细介绍如何在Windows 7系统下安装Redmine 1.3.0版本,并结合Ruby、Ruby on Rails以及MySQL等技术栈,帮助用户顺利完成部署。 #### 二、安装前准备 1. **操作系统**: Windows 7 2. **Redmine版本**: ...

    Node.js-code-notes一个node.js版本的Rails的“rakenotes”功能

    2. **Ruby on Rails(Rails)**:Rails是一个使用Ruby语言编写的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。它以生产力和简洁性著称,其中"rake"是Rails的一个任务执行工具,类似于Unix的make。 ...

    Spring Boot 笔记

    它提供了一个快速入门的方法,使 Java 开发者能够像使用 Ruby on Rails 那样高效地工作。 - **特点**: - **快速入门**: 提供更快捷的开发体验,使得开发者能够迅速搭建基于 Spring 的应用。 - **开箱即用**: 默认...

    MVC设计模式讲解笔记

    MVC模式在Web开发中非常常见,例如ASP.NET MVC、Spring MVC、Ruby on Rails等框架都采用此模式。此外,移动应用开发如Android和iOS也有类似的设计模式,如MVP(Model-View-Presenter)和MVVM(Model-View-ViewModel...

    基于WEB程序设计基础-浙江大学(13)

    3. **Web框架应用**:为了提高开发效率,Web开发者通常使用框架,如Java的Spring、Python的Django或Flask、Ruby on Rails等。这些框架提供了预设的结构和功能,如路由、模板引擎、ORM(对象关系映射)。学习框架能...

    CakePHP(PHP的框架) v5.0.0.zip

    它的设计灵感来源于Ruby on Rails,旨在简化开发过程,提高开发效率,并遵循“约定优于配置”的原则,使开发者能够快速上手并创建稳定的Web应用。 **版本5.0.0的重大更新** CakePHP v5.0.0是该框架的一个重要里程...

    MinutesOfMeeting:一个全栈项目,在主持人记笔记时自动生成结构化的会议纪要(MoM)

    后端可能采用了如Node.js、Django或Ruby on Rails等框架,配合数据库系统(如MySQL、MongoDB或PostgreSQL)来存储会议纪要。后端服务器处理来自前端的请求,将输入的非结构化文本转化为结构化的会议纪要,这可能...

    notes

    2. 后端:后端可能采用Node.js、Python Flask或Ruby on Rails等技术,处理HTTP请求、存储和检索数据。数据库选择可能包括MySQL、PostgreSQL或NoSQL选项如MongoDB。 3. 版本控制:项目很可能使用Git进行版本控制,...

    Laravel 5框架学习之Laravel入门和新建项目

    Laravel 的设计灵感来源于 Ruby on Rails,旨在简化 Web 应用程序的开发过程,提高开发效率,并提供丰富的功能以支持复杂的应用构建。在世界范围内(不包括中国),Laravel 在 PHP 框架中的市场份额超过40%,深受...

    onwebnotes:onwebnotes 是一个在线笔记应用程序

    onwebnotes可能会使用Node.js(JavaScript的后端平台)搭配Express.js框架,或者选择其他后端语言如Python的Django或Ruby的Rails。后端主要负责处理数据、执行业务逻辑、管理用户权限及与数据库交互。 **数据库集成...

    yzalvin.github.io:网站

    7. **开源文化**: GitHub 作为开源社区的重要平台,作者在这个平台上建立个人网站,也可能表示他对开源软件和文化的参与和支持。 通过 yzalvin.github.io-main 这个文件名,我们可以推测这是主仓库的文件,包含了...

    onlineconforence:该项目基于一个在线会议网站。 它包含主页,关于页面和票务页面,每个页面都有2个不同的屏幕尺寸

    后端可能会选择Node.js、Django或Ruby on Rails等技术栈,负责处理数据交互和用户认证。数据库系统(如MySQL、MongoDB或PostgreSQL)用于存储和管理用户信息、会议详情及票务数据。 **6. 测试与优化** 为了确保所有...

Global site tag (gtag.js) - Google Analytics