2011-11-09 15 views
-1

私たちのプロダクションサーバーはUbuntu 9.x、 メモリ8GB、HDD 250Gbはウェブサーバーとしてnginxを使用しています。 ピーク時(1000requests/sec)にパフォーマンスの問題が現在発生しています サーバーが1000requests/secを処理できるようにするには、nginxの設定を変更する必要があります。おかげnginxの設定が1000リクエスト/秒になる可能性があります。

ここでは、nginxのconfには、システムを分析せずに言うことは非常に困難である

#user nobody; 

worker_processes 8; 

events { 
    worker_connections 8024; 
} 


http { 
    passenger_root /opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/passenger-3.0.9; 
    passenger_ruby /opt/ruby-enterprise-1.8.7-2009.10/bin/ruby; 
    passenger_pool_idle_time 0; 
    passenger_max_pool_size 15; 

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

    sendfile  on; 

    ## General options 
    #ignore_invalid_headers on; 
    keepalive_requests 2000; 
    #recursive_error_pages on; 
    #server_name_in_redirect off; 
    #server_tokens off; 

    ## TCP options 
    tcp_nodelay on; 
    tcp_nopush on; 

    ## Timeouts 
    client_body_timeout 10; 
    client_header_timeout 10; 
    keepalive_timeout 65; 
    #send_timeout 10; 
    #expires 24h; 

    gzip on; 

server { 
    listen  80; 
    server_name resumecompanion.com; 
    passenger_enabled on; 
    rails_env production; 
    root /var/www/resumecompanion.com/production/current/public; 
    #access_log off; 
    #error_log off; 
      ## Redirect from www to non-www 
      if ($host = 'www.resumecompanion.com') { 
       rewrite ^/(.*)$ http://resumecompanion.com/$1 permanent; 
      } 


      # deny access to .htaccess files, if Apache's document root 
      # concurs with nginx's one 
      # 
      location ~ /\.ht { 
       deny all; 
      } 
     } 


# HTTPS server 
# 
server { 
    listen  443; 
    server_name resumecompanion.com; 
    passenger_enabled on; 
    rails_env production; 

    ssl     on; 
    ssl_certificate  /opt/nginx/ssl/resumecompanion.com.crt; 
    ssl_certificate_key /opt/nginx/ssl/start_resumecompanion_com.key; 

    ssl_session_timeout 5m; 

# ssl_protocols SSLv2 SSLv3 TLSv1; 
# ssl_ciphers HIGH:!aNULL:!MD5; 
# ssl_prefer_server_ciphers on; 

    root /var/www/resumecompanion.com/production/current/public; 

} 

}

+0

8つのworker_processを持つworker_connectionsについては、ulimit -n 64192(8 * 8024)のカーネルパラメータも変更する必要があります。 CPUコアの数と同じ数のプロセスを設定するのがベストです。 – petermolnar

+0

@petermolnarこれはNginxのworker_rlimit_nofileでも行うことができます。 – qerub

答えて

3

です...あなたは、ほとんどの時間は、リクエストに費やされている場所を最初に見つけなければなりません。その一般的なngingxまたはapacheは問題の偶然ではありません。

これをruby-on-railsタグで投稿したことを考えると、あなたはnginxの背後にあるレールアプリを持っているはずです...レールアプリが問題を引き起こしている可能性は非常に高いです。最初にチェックするのは、データベースクエリです。遅いクエリのログを確認し、それらを高速化する方法を見つけよう...インデックスは常に始めるのが良いポイントです。

見つからない場合は、新しい遺物としてツールを試してくださいあなたのパフォーマンスの問題がどこにありますか。