我如何在两台服务器之间分配一个应用程序?

您好

我有一个在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议我一个更好的设置,提示或想法?

  • 如何查看Web服务器当前使用的SSL版本?
  • 最佳实践,或通常设置networking托pipe服务器,权限等的最佳方式
  • 从静态web目录创buildtomcat war文件
  • 为什么要将Apache SSL证书和私钥存储在单独的文件中?
  • 如何使Apache Web Server在两个不同的端口上侦听?
  • 如何保持我的Web服务器的日志文件不会变得太大?
  • 3 Solutions collect form web for “我如何在两台服务器之间分配一个应用程序?”

    …你应该把话题范围缩小到“铁轨”。 (主题有点误导)我强烈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监视我的服务器。

    IO

    I / O等待11.9 ms读取KBps 422.8 kB / s读取/秒61使用率82%写入KBps 2,435.9 kB / s写入/秒196

    Rails应用程序监视

    平均分贝时间0.00秒
    平均请求长度10.10秒
    平均观看时间9.81秒
    请求13.93请求/分钟
    慢请求7.47请求/分钟
    请求比例缓慢54%

    Apache负载

    每秒请求数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名空闲工作人员

    Exim队列(exim -bpc)

    10475

    服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.