`
myxex
  • 浏览: 7044 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

对一篇关于RoR部署方案文章的疑问

阅读更多
仔细阅读了"RoR部署方案深度剖析"这篇文章,个人觉得有必要推荐大伙去阅读另一个Robin的一篇文章“对一篇关于RoR部署方案文章的疑问
Robin Lu 写道
从昨天的log来看,财帮子”200 OK状态的Ruby动态请求”在一百九十万以上,如果按照那篇文章中提到的javaeye的”70万200 OK状态的Ruby动态请求”,应该是javaeye的两倍以上,接近三倍的样子.

"RoR部署方案深度剖析"这篇文章似乎闭贴了,只有另开一贴发出来。

PS: 财帮子对其部署方案透露得似乎不多,可惜了。
分享到:
评论
2 楼 robbin 2008-01-16  
myxex 写道
仔细阅读了"RoR部署方案深度剖析"这篇文章,个人觉得有必要推荐大伙去阅读另一个Robin的一篇文章“对一篇关于RoR部署方案文章的疑问
Robin Lu 写道
从昨天的log来看,财帮子”200 OK状态的Ruby动态请求”在一百九十万以上,如果按照那篇文章中提到的javaeye的”70万200 OK状态的Ruby动态请求”,应该是javaeye的两倍以上,接近三倍的样子.

"RoR部署方案深度剖析"这篇文章似乎闭贴了,只有另开一贴发出来。

PS: 财帮子对其部署方案透露得似乎不多,可惜了。


其实性能优化方案无非就是那些大家都知道的方面,例如缓存,代码优化等等,推荐你看看这个:

http://www.iteye.com/topic/24508


1 楼 robbin 2008-01-16  
石锅拌饭 写道

robbin 写道
Apache/Nginx的接收缓冲区都只开了8KB,如果页面比较大,Mongrel就没有办法一次性把数据全部推给Web服务器,必须等到Web服务器把接收缓冲区的8K数据推到客户浏览器端以后,清空缓冲区,才能接收下一个8KB的数据。这种情况下,Mongrel必须和Web服务器之间进行多次数据传输,才能完成整个Web响应的过程,显然没有一次性把页面数据全部推给Web服务器快。

只有几个问题,application layer的读缓存和读的次数是否影响到socket另一端写socket的次数的? 写socket的次数是否和另一段socket read的次数对应? Web服务器向到客户端socket的写操作在什么情况下会被阻塞? 文中的一些观点和说法好像多少混淆了应用层和传输层的概念.


其实他没有理解我要说的意思。Mongrel在这种情况下并不会被阻塞住,因为Mongrel在执行完Rails实例以后就解锁了,但是Mongrel当中有n个用户线程在切换,每个线程持有一个StringIO对象正在执行write操作。如果Mongrel连接Lighttpd的话,StringIO的write操作一下就执行完了,该线程就结束掉了。但是Mongrel如果连接Apache/Nginx的话,write操作就会一直等下去,那么Mongrel里面就会有很多这样的线程来回切换,那么你说哪个速度快?哪个开销大呢?

石锅拌饭 写道

robbin 写道
我们假设使用服务器端程序控制带权限的文件下载,某用户下载的是一个100MB的文件,该用户使用了多线程下载工具,他开了10个线程并发下载,那么每个线程Mongrel在响应之后,都会把整个文件读入到内存的StringIO对象当中,所以总共会创建出来10个StringIO对象保存10份文件内容,所以Mongrel的内存会一下暴涨到1GB以上。而且最可怕的是,即使当用户下载结束以后,Mongrel的内存都不会迅速回落,而是一直保持如此高的内存占用,这是因为Ruby的GC机制不好,不能够及时进行垃圾回收。

Mongrel处理rails request和静态文件使用的是不同的handler.处理静态文件用的是DirHandler,DirHandler没有通过调用response的 start方法使用到StringIO,而是直接调用了response的send_file方法,直接write socket.验证过程非常简单,自己起一个mongrel,在public下放一个100M的文件,通过浏览器下载一下.在我的mac上,本来是76M 的mongrel,在下载结束后是74M,下载过程中也一直小于80M,最低到过68M.无论是过程中还是结束后,都没有出现占用内存暴涨的现象.


他显然没看我的这段话的前提条件: 使用服务器端程序来控制带权限的文件下载,关于这个问题的详细论述,请看RoR网站如何利用lighttpd的X-sendfile功能提升文件下载性能,他反驳的的事情和我原文说的事情根本就不是一码事。

石锅拌饭 写道
首先,我不太赞同复杂的就好,简单的就不专业这样的观点,Unix philosophy也不是这样的.其次,mongrel也不是mongrel_rails start就能部署到产品环境的.


这话说的有点莫名其妙, 我只说过大多数人更喜欢简单的方式,而不愿意尝试复杂的方式,怎么就引申到我认为简单的就不专业上来了? 至于后面这句话我就更不明白想说啥了。

相关推荐

    RoR性能优化经验谈

    RoR(Ruby on Rails)是一种流行的开源Web开发框架,以其高效和简洁的代码著称。然而,随着网站规模的增长,性能优化成为必不可少的环节。在本文中,我们将探讨一些RoR性能优化的关键方面,主要基于JavaEye网站在...

    RoR中文解决方案(很不错哦)

    标题中的“RoR中文解决方案”指的是Ruby on Rails(简称RoR)的一个针对中文环境的优化方案,Ruby on Rails是一款基于Ruby编程语言的开源Web开发框架,以其MVC(Model-View-Controller)架构和DRY(Don't Repeat ...

    ror

    NULL 博文链接:https://xuxiangpan888.iteye.com/blog/266696

    ROR安装必备所有架包

    这个压缩包包含了一系列用于ROR框架的基础组件,但不包括Ruby本身。让我们深入了解一下这些包的作用和重要性。 首先,`actionpack`是Rails的核心组件之一,它提供了控制器、路由和视图等功能。`actionpack-1.13.5....

    ror中文资料

    在提供的压缩包文件中,我们可以看到"Ruby语言中文教程",这暗示了资源可能包含了关于Ruby语言的基础知识和进阶内容,对于学习RoR至关重要。Ruby是RoR的基础,理解其语法和特性对于掌握RoR框架极其关键。 **Ruby...

    ror实例

    Ruby on Rails(简称RoR或Rails)是一种基于Ruby语言的开源Web应用框架,它遵循Model-View-Controller(MVC)架构模式,旨在提高开发效率并提供简洁、优雅的代码结构。"ror实例"可能指的是在学习或实践中,通过创建...

    神经网络ror resenet模型

    而“Ror”(Residual-of-Residual)则是对ResNet的一种扩展,进一步优化了网络的性能,尤其在图像分类任务上表现突出。 **ResNet模型核心思想** ResNet的核心是引入了“残差块”(Residual Block),通过引入一个...

    初探ROR

    Ruby on Rails(简称ROR)是一个基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在促进开发过程的简洁性和效率。Ruby on Rails的核心理念是“Don't Repeat Yourself”(DRY,...

    RoR选题方向—源代码

    Ruby on Rails(RoR)是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程。在这个选题方向中,我们主要探讨的是与RoR相关的源代码分析和学习。源代码是...

    RoRBlog 基于RoR的博客系统

    基于RoR的博客系统,代码风格简单清晰,前后太完善,适合初学者。

    我的ror的第一天

    压缩包中的文件"ror.txt"可能是博主Jack Lang记录的Rails安装或学习过程的笔记,或者是一份关于Rails基础知识的文档,可能包含命令行输出、遇到的问题及解决方案等内容。阅读这个文件将进一步加深对Rails的理解,...

    Windows 上搭建 ROR环境

    随着Web开发技术的不断发展,Ruby on Rails(简称Rails或ROR)作为一种高效、简洁且优雅的Web开发框架,受到了广大开发者的青睐。然而,在Windows环境下搭建Rails开发环境却让不少初学者感到头疼。本文将详细介绍...

    机遇ROR 的图书管理系统

    《机遇ROR的图书管理系统》是一份以Ruby on Rails(简称ROR)技术为核心,旨在构建高效、便捷的图书管理解决方案的学习资料。Ruby on Rails,是基于Ruby编程语言的开源Web应用框架,它遵循MVC(Model-View-...

    RoR 培训课程PPT

    - **关联、验证及回调**:深入讲解ActiveRecord中的关联关系(如一对一、一对多等),以及如何进行数据验证和回调函数的应用。 - **ActionView表单**:学习如何在视图层构建动态表单,利用ActionView提供的模板...

    ROR 文件的上传与下载

    在Ruby on Rails(简称ROR)框架下,处理文件的上传与下载是一项常见的需求,尤其是在构建包含媒体内容的应用程序时。本文将基于给定的文件信息,详细阐述如何在Rails应用中实现文件的上传与下载功能,包括数据库...

Global site tag (gtag.js) - Google Analytics