我在ec2-instance t2.small上使用nginx和passenger运行rails app,内存为2GB,内存为1 CPU。
应用程序包含开发模式下的狂欢和相关宝石。狂欢后端过去工作正常,但是自从过去3天以来,如果保持闲置一段时间,则需要花费太多时间来响应并且启动时间太长。我在nginx中尝试了各种乘客方法的组合,但没有帮助,所以我省略了这些,下面是当前场景中的nginx文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
passenger_root /usr/local/rvm/gems/ruby-2.2.1/gems/passenger-5.0.20;
passenger_ruby /usr/local/rvm/gems/ruby-2.2.1/wrappers/ruby;
passenger_app_env development;
#added two lines for setting user group
passenger_default_user root;
passenger_default_group root;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
passenger_spawn_method smart;
passenger_pool_idle_time 1000;
server {
listen 80;
server_name localhost;
root /var/www/html/apps/localfiles/public;
passenger_enabled on;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name abcd.com www.abcd.com;
root /var/www/html/apps/abcd/ComingSoon;
passenger_enabled on;
}
server {
listen 80;
server_name xyz.com www.xyz.com;
root /var/www/html/apps/xyz/ComingSoon;
passenger_enabled on;
}
}
任何有关nginx /乘客配置的正确组合的亮点都将受到高度赞赏。
更新:当我使用Spree API时,我需要点击一次API 3-4次以获得正确的响应,它在API调用之间经常抛出这个Web application could not be started
。请帮助解决这个问题
答案 0 :(得分:0)
数据库连接
根据我的经验,数据库连接是Rails应用程序的最大瓶颈。
我发现这主要来自Heroku,uses Amazon's EC cloud - 外部数据库严重会降低应用程序的速度。
-
您既没有提及您是否从数据库中提取,也未提及您正在使用的数据库设置。
数据库服务器距离您的Web服务器越远(地理位置),应用程序运行速度越慢。
我记得将我们的开发MYSQL数据库挂钩到我们的生产应用程序中,并等待3/5秒刷新;在同一数据中心安装数据库服务器将时间推迟到0.25秒。
我强烈建议您检查生产数据库
亚马逊提供了自己的MYSQL db functionality,我强烈建议您使用它。
如果您有预算,请使用RackSpace(他们在同一个数据中心拥有MYSQL服务器和Web服务器) - Rails应用程序可以快速运行。