2017-07-05 33 views
-4

我有一個應用程序在生產中使用Ruby on RailsNginxPassenger,性能很好,但隨着時間的推移(一小時或更長時間後)它會變慢,我需要重新啓動Nginx才能再次提高性能。我可以知道如何使它更加優化和可擴展,並避免繼續重新啓動。謝謝,大家需要你的幫助如此糟糕。如何使用Nginx和Passenger優化Ruby on Rails應用程序

回答

2

您可以通過一些設置來優化您的Nginx服務器。

如果您的服務器有root access,並且已經正確添加Nginx,您可以考慮進行一些更改。

1)運行sudo vim /etc/nginx/nginx.conf &考慮基於什麼是你需要這些設置(不用更換整個代碼到你的服務器的一些默認設置是不是在這裏只需添加你neeed的)

user www-data; 
worker_processes 4; 
pid /run/nginx.pid; 

events { 
     worker_connections 768; 
     multi_accept on; 
     use     epoll; 
} 

worker_rlimit_nofile 40000; 

http { 

     ## 
     # Basic Settings 
     ## 

     sendfile on; 
     tcp_nopush on; 
     tcp_nodelay on; 
     client_body_timeout 500s; 
     client_header_timeout 500s; 
     keepalive_timeout 500s; 
     send_timeout 300s; 
     types_hash_max_size 2048; 
     # server_tokens off; 
     client_max_body_size 100000M; 
     # server_names_hash_bucket_size 64; 
     # server_name_in_redirect off; 

     include /etc/nginx/mime.types; 
     default_type application/octet-stream; 

     ## 
     # SSL Settings 
     ## 

     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE 
     ssl_prefer_server_ciphers on; 

     ## 
     # Logging Settings 
     ## 

     access_log off; 
     #access_log /var/log/nginx/access.log; 
     #error_log /var/log/nginx/error.log; 

     ## 
     # Gzip Settings 
     ## 

     gzip on; 
     gzip_disable "msie6"; 
       gzip_vary on; 
     # gzip_proxied any; 
     gzip_comp_level 2; 
     # gzip_buffers 16 8k; 
     # gzip_http_version 1.1; 
     gzip_min_length 10240; 
     gzip_proxied  expired no-cache no-store private auth; 
     gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; 
     gzip_disable "MSIE [1-6]\."; 

} 

您可以根據您的應用和需要更改數字。

2)運行sudo vim /etc/nginx/sites-enabled/default &考慮基於什麼是你需要這些設置(不用更換整個代碼到你的服務器的一些默認設置都沒有。只需添加那些你neeed)

server { 
     listen 80 default_server; 
     listen [::]:80 default_server ipv6only=on; 

     passenger_enabled on; 

     # redirect server error pages to the static page /50x.html 
     error_page 500 502 503 504 /50x.html; 
     location = /50x.html { 
      root html; 
     } 
    location ~* \.(jpg|jpeg|png|gif|ico)$ { 
     access_log  off; 
     log_not_found  off; 
     expires 30d; 
    } 

    location ~* \.(js)$ { 
     access_log  off; 
     log_not_found  off; 
     expires 150d; 
    } 
    location ~* \.(css)$ { 
     access_log  off; 
     log_not_found  off; 
     expires 150d; 
    } 
} 

您可以根據您的應用和需要更改數字。

請記住restart ngnix更改後。

再次小心地添加或刪除什麼,再次切勿副本&整個代碼粘貼一些默認設置是不是在這裏。

另一件事是看看你的logs & tmptmp文件/文件夾,因爲你可以消除日誌以減少內存和空間。您還可以查看tmp文件夾和設置。

您也可以考慮(推薦)在您的意見中做緩存。如您所知,導軌有Fragment and Russian doll caching。緩存將始終有助於提高響應時間。

如果你不熟悉緩存,也可以使用漸進式渲染。您可以使用gem 'progressive_render'watch this toturial

希望它有幫助。

+0

thx這個傢伙 – Arcubalino

+0

沒問題。如果這對你有幫助,我很感激你是否贊成並接受你的答案 – Rubioli

相關問題