【问题标题】:Scalability of web application with nginx and two physical linux servers使用 nginx 和两个物理 linux 服务器的 Web 应用程序的可扩展性
【发布时间】:2016-09-07 10:48:52
【问题描述】:

我的 web 应用程序 ruby​​ on rails 的吞吐量越来越大。 使用 New Relic,我的 Apdex 分数

我的应用程序正在我的 Debian 服务器上运行(例如:ip pulic 是 123.235.23.16),使用 Nginx 和 THIN。代码和数据库mysql都在这台服务器上。

我的应用有 3 个由 THIN 创建的应用实例(0.0.0.0:3000、0.0.0.0:3001、0.0.0.0:3002)。在 Nginx http 配置中,我使用负载均衡方法:

upstream myapp1 {
        server 127.0.0.1:3000;
        server 127.0.0.1:3001;
        server 127.0.0.1:3002;
    }

server {
        listen 80;
        ...
        location / {
            proxy_pass http://myapp1;
        }
        ...
    }

我想知道我是否添加另一个 Debian 服务器(例如:ip pulic 是 123.235.23.17)来帮助第一个服务器处理吞吐量,哪个服务器应该配置为 nginx 负载平衡服务器?如何使用两个不同的服务器和不同的应用程序实例处理 mysql 数据库 io? mysql远程?

【问题讨论】:

    标签: mysql ruby-on-rails ruby nginx apdex


    【解决方案1】:

    如果响应时间主要是由排队时间引起的,添加更多物理服务器或主机只会影响您的 Apdex 分数,这种情况会发生,但在 Rails 生产工作负载中相对较少。

    Rails 应用程序最常花时间的地方是其数据库的 I/O。检查 N+1 爆炸的查询计数,检查 NewRelic 或数据库本身中的慢查询日志,看看添加索引是否有帮助。如果性能影响仅限于少数页面,请调查使用一些缓存。

    主页速度很慢也是很常见的,但其他页面还可以。看看您的 Apdex 分数是否主要受到一些不良页面的影响,而不是整体应用程序运行缓慢。

    【讨论】:

    • 您的意思是,添加更多物理服务器不是一个好的解决方案,即使在我的情况下,4 个 CPU 的 CPU 使用率也很高?我没有 n+1 查询问题。 Memcached 正在运行。
    • 高 CPU 使用率值得研究 - 是否有可以运行的测试套件可以打开时间分析?这可以指示应用程序的哪些部分需要加速。可以在操作上执行哪些操作来加速慢速应用程序是有限度的。另外,每个页面的 Apdex 低还是只有几页?
    • 感谢您的回答,我选择 New Relic 来监控我的应用程序。当有 168 转时,每一页都变慢。但是在 3 小时,没有访客,我的应用程序很快。
    猜你喜欢
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 2011-07-09
    • 2010-09-30
    • 2016-06-03
    • 1970-01-01
    • 2011-08-17
    相关资源
    最近更新 更多