質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Q&A

0回答

703閲覧

アプリがすぐにタイムアウトする。

ManaKuri09

総合スコア21

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

0グッド

1クリップ

投稿2018/10/01 06:50

当方の環境
さくらVPS 1Gプラン
centOS7
nginx
fastCGIは入っていない?
Macで開発
アプリの情報
Ruby on Rails
MySQL5.7
Capistrano
Unicorn

この環境でサーバーに接続すると、同じアクションでもエラーが起きずに通常に画面表示する時と、505エラーが返ってくる時があります。

その時エラー(info)ログは以下のようになっています。keepalive_timeout

2018/10/01 15:20:40 [info] 2159#0: *1 client XXX.XXX.XXX.XX closed keepalive connection 2018/10/01 15:20:52 [info] 2158#0: *43 client closed connection while waiting for request, client: XXX.XXX.XXX.XX, server: 0.0.0.0:XX

今は自分以外にこのアプリを触っていないので、意図的にコネクションを切っているとかではないはずです。
サーバのチューニングの問題なのかなと思って他の記事を見て以下のことは試してみています。

  • やってみたこと

nginxのアプリ用の設定ファイル内で
0. keepalive_timeout の値を伸ばしてみる
0. proxy_send_timeout の値を伸ばしてみる
0. proxy_read_timeout の値を伸ばしてみる
(nginxの再起動はしています。)
0. - アプリのunicorn.rbのタイムアウトを伸ばしてみる
0. - サーバーのメモリが1Gなのでworker_processesを1に修正

こんな感じで少しは改善されているような気もするのですが、
相変わらずタイムアウトのエラーが出てしまいます。
他に原因等があるのでしょうか?
念のために、unicorn.rbの設定ファイルとnginxの設定ファイルを記載します。

何卒、よろしくお願いいたします。 **unicorn.rb** # -*- coding: utf-8 -*- worker_processes 1 timeout 300 listen Dir.pwd + '/tmp/unicorn.sock' pid Dir.pwd + '/tmp/unicorn.pid' log = Dir.pwd + '/log/unicorn.log' stderr_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT']) stdout_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT']) preload_app true GC.respond_to?(:copy_on_write_friendly=) and GC.copy_on_write_friendly = true before_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! old_pid = "#{ server.config[:pid] }.oldbin" unless old_pid == server.pid begin sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU Process.kill :QUIT, File.read(old_pid).to_i rescue Errno::ENOENT, Errno::ESRCH end end end after_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection end
**/etc/nginx/conf.d/hoge.conf** error_log /var/www/hoge/current/log/nginx.error.log info; access_log /var/www/hoge/current/log/nginx.access.log; client_max_body_size 2G; upstream app_server { server unix:/var/www/hoge/current/tmp/sockets/.unicorn.sock fail_timeout=0; } server { listen 80; server_name hoge.com; keepalive_timeout 10m; send_timeout 200; client_body_timeout 600; client_header_timeout 600; proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; root /var/www/hoge/current/public; try_files $uri/index.html $uri.html $uri @app; location @app { # HTTP headers proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server; } error_page 500 502 503 504 /500.html; location = /500.html { root /var/www/hoge/current/public; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taka-saan

2018/10/01 07:08

アプリケーションでどのような送受信を行っているのでしょうか。クライアント側のリクエストのコネクションを、 無通信でずっと(何分も)維持しておくことをサーバーに期待していますか? それとも、特定のリクエストのレスポンスがサーバ側で単純に遅いだけですか?
ManaKuri09

2018/10/01 08:36 編集

詳しい書き方がわからないのですが、作っているアプリは社員の管理をするアプリ(テガラミルというアプリのお天気だよりという機能を参考)です。なので送受信に関しては基本的にユーザIDや入力項目を渡して、DBに登録するユーザのアクションと、管理者側はユーザIDを渡して、紐づく社員の天気を取得するといったアクション内容です。アプリケーションではdevise(railsでログイン認証を楽に作れる)のログインのセッション情報だけ一定時間残したい。それ以外は維持する必要がないのかと思っています。
ManaKuri09

2018/10/01 08:38 編集

今は、クリックして1〜3秒以内にレスポンスが返って(画面表示まで)来ます。しかし、505エラーが出るのもクリックして1〜3秒以内なので、タイムアウトしているのかg?なんでだ?って状態です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問