Rails应用性能调优

前一段用ruby on rails完成了一个应用,放在一台教育网内的服务器上。在校内测试感觉速度还可以,但是从网通(学校的部分宿舍是网通的网络)访问就一直速度奇慢,于是开始了调试速度的征程。最开始的时候应用跑在WebBrick服务器上,我也知道,WebBrick是一个开发测试用的服务器,ruby写的,在一个时刻只能响应一个请求,其他请求都要靠边站,但是想想应用的使用人员也不多,不会达到高并发的情况,于是就一直用它。从校内访问速度基本没感觉,但是从网通访问速度就巨慢无比,但是同一台机器上tomcat上的应用访问就比较快。感觉可能是ruby解释执行的速度确实比较慢[不是说多页面的问题,而是访问一个页面用的时间更长一些的问题,但是也可能是页面体积较大的问题,存疑]。

于是开始折腾,翻遍了cnrails上关于服务器性能的帖子,开始对各个服务器的性能有了一个大概的了解。总的来说,如下图所示:

很faint的是,lighttpd、nginx根本就不是为windows平台设计的,所以配置起来很麻烦,而且据说跑起来比较容易崩溃,而服务器是装的windows 2003 server,而且据说Apache+fastcgi也容易崩掉,所以就选择用mongrel了。比较庆幸的是,InstantRails1.4里面自带了mongrel,而且配置相当简单。主要就是把Apache 2.2.3里面的一些模块加上,然后在httpd.conf里面写下这么一段(具体配置可能不同,反正在我的机器上ProxyPreserveHost不好用):

<VirtualHost *:80>

ServerName myapp.com

ServerAlias www.myapp.com

ProxyPass / http://www.myapp.com:8000/

ProxyPassReverse / http://www.myapp.com:8000

ProxyPreserveHost on

</VirtualHost>

也就是把访问apache 80端口的访问都转发到8000的mongrel上去,至于端口想怎么映射就看自己了。

接下来用jmeter进行测试,果然是很棒的工具,虽然俺还用的不熟。

不用Apache转发,只用mongrel响应的时候,吞吐量也就300/sec左右,达不到上面那张图的速度。

上面这张图设的是10个并发(不知道这么测对不对:P),可以看到,平均的连接时间在2000左右。

配置为apache转发之后,性能并没有什么太大的提升,吞吐量还是那个样子,看来在一个mongrel的时候,用apache转发也不是什么银弹,但是从网通访问的速度好像快一些了。

当我把并发调成20个,平均的响应时间就翻了一倍,到50的时候性能就不可忍受了。看来mongrel他本身和WebBrick也差不太远。但是如果用集群可能就要好一些。

而在同一台服务器上面的tomcat,在200并发的时候才达到2000左右,吞吐量在3000左右,性能不可相提并论。。。。。。

时间: 2024-08-03 18:26:52

Rails应用性能调优的相关文章

oracle数据库性能调优技术:深入理解单表执行计划

一.概述 这篇文章是数据库性能调优技术的第二篇.上一篇讲解的索引调优是数据库性能调优技术的基础.这篇讲解的深入理解单表执行计划,是数据库性能调优的有力工具. 查询语句可以有多种可选执行计划,如何选择效率最高的执行计划?达梦数据库.oracle数据库.sql server数据库都是采用基于成本的查询优化,对备选执行计划进行打分,选择大家最小的执行计划进行执行.这些内容,我会在后续的几篇文章中进行详细的描述.在此之前,我们首先需要掌握如何理解数据库执行计划.这篇文章讲解只涉及单表操作的执行计划. 达

Liferay前端性能调优(1) 测评工具YSlow

最近我们团队要问Liferay做前端页面调优,当然了,测评工具是最重要的,为了看具体的页面加载时间等 ,我们首选当然是Chrome浏览器的诊断工具,但是总感觉不专业,基于我已有的经验,我还是推荐了YSlow,它 会对于页面的各项指标进行打分,然后最终获得总分然后评级,一般级别有A,B,C,D,E,F6个级别. 如何安 装和测试YSlow: (1) 从Firefox的Add-on上下载 "YSlow" (2)重启Firefox检查是否YSlow 已经被正确的安装 (3)到我们要测试的页面

数据库性能调优技术

一.概述 随着数据库在各个领域的使用不断增长,越来越多的应用提出了高性能的要求.数据库性能调优是知识密集型的学科,需要综合考虑各种复杂的因素:数据库缓冲区的大小.索引的创建.语句改写等等.总之,数据库性能调优的目的在于使系统运行得更快. 调优需要有广泛的知识,这使得它既简单又复杂. 说调优简单,是因为调优者不必纠缠于复杂的公式和规则.许多学术界和业界的研究者都在尝试将调优和查询处理建立在数学基础之上. 称调优复杂,是因为如果要完全理解常识所依赖的原理,还需要对应用.数据库管理系统.操作系统以及硬

可预见的Oracle应用程序的性能调优

这篇技巧性文章是由"国际Oracle用户组"(IOUG)提供的,它是一个由用户组成的组织,这个组织通过提供高质量的信息.培训.网络和支持,来提高Oracle数据库专家和数据库开发者的水平.这篇文章摘自由David Welch所写的论文<可预见的Oracle应用程序性能调优>.点击这里成为"国际Oracle用户组"的一员,从而获得成千上万的由Oracle用户写的技巧性文章和科技文献. 引言 我们见到过很多带有巨大性能问题的Oracle应用程序和电子商务套件

oracle数据库性能调优技术:索引调优

一.概述 随着数据库在各个领域的使用不断增长,越来越多的应用提出了高性能的要求.数据库性能调优是知识密集型的学科,需要综合考虑各种复杂的因素:数据库缓冲区的大小.索引的创建.语句改写等等.总之,数据库性能调优的目的在于使系统运行得更快. 调优需要有广泛的知识,这使得它既简单又复杂. 说调优简单,是因为调优者不必纠缠于复杂的公式和规则.许多学术界和业界的研究者都在尝试将调优和查询处理建立在数学基础之上. 称调优复杂,是因为如果要完全理解常识所依赖的原理,还需要对应用.数据库管理系统.操作系统以及硬

oracle数据库性能调优技术:深入理解嵌套循环执行计划

一.概述 这篇文章是数据库性能调优技术的第三篇.上一篇文章讲解了深入了解单表执行计划,单表执行计划是理解多表执行计划的基础. 两张表的连接有三种执行方式:1)嵌套循环连接:2)散列连接:3)归并连接.两张表连接时选择这三种中的哪一种呢?这取决于索引.以及连接的代价.在该系列的第三篇(本文)文章中讲解嵌套循环连接,第四篇文章中讲解散列连接,第五篇文章中讲解归并连接.在第六篇以后会分析IN子查询以及EXISTS子查询. 达梦数据库.oracle数据库.sql server数据库在数据库执行计划方面并

oracle数据库性能调优技术:深入理解散列连接执行计划

一.概述 这篇文章是数据库性能调优技术系列的第四篇.上一篇文章讲解了深入理解嵌套循环连接执行计划. 上一篇文章中提到两张表的连接有三种执行方式:1)嵌套循环连接:2)散列连接:3)归并连接.散列连接是很重要的连接方式,包含比较多的内容,这篇文章中讲解为什么需要散列连接?如何理解散列连接? 和前三篇文章一样,本文讲解的是些比较抽象的内容,不拘泥于具体的数据.所以本文中使用的代价评估模型也是抽象的,假设了数据库缓冲区大小只有一个页,新页的读取必然导致旧页的释放.读完本文之后应该能够读懂达梦数据库.o

Java EE应用程序在Glassfish上的性能调优案例分析

Java EE应用的性能问题对严肃的项目和产品来说是一个非常重要的问题.特别是企业级的应用,并发用户多,数据传输量大,业务逻辑复杂,占用系统资源多,因此性能问题在企业级应用变得至关重要,它和系统的稳定性有着直接的联系.更加重要的是,性能好的应用在完成相同任务的条件下,能够占用更少的资源,获得更好的用户体验,换句话说,就是能够节省费用和消耗,获得更高的利润. 要获得更好的性能,就需要对原来的系统进行性能调优.对运行在Glassfish上的JavaEE应用,调优是一件相对复杂的事情.在调优以前必须要

Java程序性能调优的基本知识和JDK调优

一 基本知识 1.1 性能是什么 在性能调优之前,我们首先来了解一下性能是什么?关于性能,我想每个学习过Java的人都能列出几点,甚至可以夸夸其谈.在<Java TM Platform Performance>一书中,定义了如下五个方面来作为评判性能的标准: 1) 运算的性能--哪一个算法的执行性能最好? 2) 内存的分配--程序运行时需要耗费多少内存? 3) 启动的时间--程序启动需要多长时间?这在Web项目中的影响不大,但要注意部分程序需要部署或运行在客户端时的情形(比如applet程序)