您好
我有一个在CentOS QuadCore 16GB RAM服务器上运行的电子邮件营销Rails应用程序。 但是目前我们的networking服务器花了很长时间来响应高峰时段的请求(Mongrel Cluster + Apache)。 我们使用ScoutApp(www.scoutapp.com)来监控它。
侦察警报超过668个请求的最大时间(3秒)超过120个请求的最大时间(3秒)
我承包了另一台服务器双至强4GB内存。
在两台服务器之间分发这个应用程序的最佳设置是什么? 我正在考虑在Mysql和Exim中使用SERVER-1(16GB RAM),并将应用程序迁移到SERVER-2(4GB RAM),并仅将其用作WEB SERVER(Mongrel群集+ Apache)。
任何人都可以build议我一个更好的设置,提示或想法?
…你应该把话题范围缩小到“铁轨”。 (主题有点误导)我强烈build议看看日志,并试图找出滞后来自何处。
Rails应用程序运行缓慢的原因有很多,而且大部分时间与数据库或Web服务器本身无关。 我会看看确保caching不被禁用。 (在开发模式下,caching默认是禁用的)Rails通过很多cachingalgorithm获得很多性能提升…另外,在开发过程中打开的几个debugging位也会带来一些性能。
如果一切工作都可以完成,那么有几个步骤可以走向“集群化铁路环境”。 我之前build议的debugging也可以告诉你需要扩展的东西。 如果你经常在数据库上等待响应,那么把数据库服务器从那个盒子移到它自己的地方…或者把数据库单独集中起来可能就是你所需要的。 如果您发现www服务器是滞后的…在Web服务器上放大。
拆分Web / http托pipe和托pipe在不同服务器上的数据库是一个好的开始。 一个不错的第二步是获得一个重复的Web服务器,并使用某种types的负载平衡器对其进行设置。 无论是位于两台服务器之前的硬件,还是基于软件的硬件。
编辑:这假设你是积极的数据库不是你的限制因素(这很可能)。 将Web服务器从数据库服务器中移出将有助于这种情况,但是我build议的第二个Web服务器只会在每个请求的处理速度降低而不是数据库时提供帮助。
这不是调用问题的数据库。 当响应开始变慢时,我检查了mysql进程,mysql没有等待进程。 我想有太多的请求到达Web服务器(Apache + Mongrel集群)。 即使在PHP上运行的网站也无法在高峰时间到达。 我只有ScoutApp监视我的服务器。
I / O等待11.9 ms读取KBps 422.8 kB / s读取/秒61使用率82%写入KBps 2,435.9 kB / s写入/秒196
平均分贝时间0.00秒
平均请求长度10.10秒
平均观看时间9.81秒
请求13.93请求/分钟
慢请求7.47请求/分钟
请求比例缓慢54%
每秒请求数1.80请求/秒
总访问量:19169 – 总stream量:461.9 MB
CPU使用率:u4 s.11 cu1.31 cs0 – .0648%CPU负载
2.29个请求/秒 – 56.5 kB /秒 – 24.7 kB /请求
目前正在处理12项请求,9名空闲工作人员
10475