我的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 load balaancing服务器?如何使用两个不同的服务器和不同的应用程序实例来处理mysql数据库io? mysql远程?
如果响应时间主要由队列时间引起,则添加更多物理服务器或主机只会影响您的Apdex分数,这种情况会发生,但在Rails生产工作负载中相对较少。
Rails应用程序花费时间最常见的地方是I / O及其数据库。检查N + 1爆炸的查询计数,检查NewRelic或数据库本身的慢查询日志,看看添加索引是否有帮助。如果性能命中仅限于少量页面,请使用一些缓存进行调查。
主页也很常见,但其他页面都可以。看看您的Apdex分数是否主要受到一些坏页面的影响,而不是整体应用程序的缓慢程度。