服务器是用的阿里云,然后 cpu,内存和网络都很富余~ 系统是 ubuntu + nginx + passenger 的,感觉是 passenger 配置的问题~ 有人遇到过同样的问题过么~ 求建议~~
出现 website is under heavy load 这种情况一般是当前请求过多,Passenger 处理不过来,尤其是在刚刚部署完,Passenger 重启的时候这个问题会比较明显。在有比较多的文件上传、数据导出的时候,也会严重阻塞 Passenger 对其它请求的处理,也比较容易导致 website is under heavy load。所以我的建议是:
1、在config/environments/production.rb
中,设置
config.assets.compile = false
理由请见: http://stackoverflow.com/questions/8821864/config-assets-compile-true-in-rails-production-why-not
2、限制 Nginx 文件上传的大小。
3、将 Passenger 换成 Unicorn,进行热部署,减少刚部署完成后大量请求阻塞,Unicorn 和 Nginx 的具体配置请参见: https://ruby-china.org/topics/12033
passenger_max_pool_size,https://www.phusionpassenger.com/library/config/nginx/reference/#passenger_max_pool_size
passenger_pool_idle_time,https://www.phusionpassenger.com/library/config/nginx/reference/#passenger_pool_idle_time
这个参数应该也有效。默认 300s 有点大了。
passenger_max_request_queue_size, https://www.phusionpassenger.com/library/config/nginx/reference/#passenger_max_request_queue_size
请求队列,个人认为加大的意义不大。