0

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

我的应用程序正在我的 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远程?

4

1 回答 1

1

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

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

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

于 2016-09-07T13:19:24.123 回答