Beginner's Guide to Partitioning vs. Sharding in Postgres | Claire Giordano | PGConf EU 2023
504 Gateway timeoutがでたー! Nginx+unicorn+rails@ubuntu12.04の(最低限動く)環境構築 - 軸はこーしろーからいきますよの後の話です. Nginx+Unicorn+Railsでグラフ構造上で色々計算する(ダイクストラ法とか)ツールを 作って実験してたんですが,でかいグラフデータを投げた時にNginxが タイムアウトしてしまいました.その時にした対処です. Unicornの設定 とりあえずUnicornの設定を確認して見ました. そうしたら案の定timeoutまでの時間が60秒に設定されていたので, 600秒に変更. - timeout 60 + timeout 600 しかし,状況変わらず. NginxのはいてるエラーなんだからそりゃNginxの設定も見なおさなければいけないかった… Nginxの設定 nginx連載3回目: nginxの設
さくらVPSで先月と今月、勝手に再起動かかってサービス動いてないのにしばらく気づけなかったのでunicornの自動起動設定してみた ぐぐった先からシェルもらってきて動かしたけど unicorn not found って言われた 調べたらrvm使ってたらラッパーなるものを作りなさいと rvm wrapper 2.0.0@default start unicornするとホームにstart_unicornっていうリンクファイルができるのでこれを呼ぶように変更 /home/ubuntu/.rvm/bin/start_unicornシェルスクリプト /etc/init.d/unicorn #!/bin/sh NAME="Unicorn" ENV=production ROOT_DIR="/var/www/blog" PID="${ROOT_DIR}/tmp/pids/unicorn.pid" CON
Redmineとは Ruby製のオープンソースのプロジェクト管理しすてむ。 目標 Redmine 1.4をUbuntu上で、nginx + unicornで動かす。 前提 nginx、mysqlは導入済みとする。 ディレクトリ構成 $ /home/redmine/webapp |- この下に配置 Ruby周りのインストール システムのRubyが1.8だったため、rvmを使って1.9系のRubyをインストール RVMのインストール システムのRubyを汚さないようにRVMを使って1.9系のRubyをインストールする。 $ $ curl -L get.rvm.io | bash -s stable source ~/.bashrc Ruby 1.9.3のインストール $ rvm install 1.9.3 $ rvm use 1.9.3 --default $ ruby -v Ruby 1.9
GitlabはGithubのオープンソースクローンで プライベートリポジトリをつくることはもちろん、 ユーザ管理や公開鍵管理などをWebブラウザ上からできる、おされなツールです。 さらに、プロジェクト毎にWallやWikiが使えたり、ブランチのネットワークグラフを表示したり、マージリクエストの管理などもできます。 最近構築する機会があったのでメモ # ただし、5.0へのメジャーアップデートでGitoliteが必要なくなるらしく、もっと簡単にインストールが済むようになるかもです。 とりあえず現時点の手順です。 極力手間をかけず、メンテもしやすいような感じで構成してみました。 メモ程度に残していたログを都合よくまとめただけなので、へんなとこあるかもです。 あしからず。 公式の手順はこちら gitlabhq/installation.md at 4-2-stable · gitlabhq/git
preforkでテストしました。 yumでインストールした状態で使ってます。 最後にテスト用のconfをincludeしています。 httpd.confKeepAlive Off 〜 StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 〜 Include /home/homepage/hello_world_rack/hello_world_rack_apache.conf hello_world_rack_apache.conf passengerのテストの場合は、VirtualHostまで使ってます。 unicornをテストする場合は、VirtualHostまでをコメントアウトし、ProxyPassのところのコメントアウトを
Web サーバやアプリケーションサーバは、リクエスト数やメモリ使用量がある閾値を超えたらプロセスの再起動を行う仕組みが用意されています。 Apache にも IIS にもそのための設定項目が用意されていて、この仕組みを一般にリサイクルと呼ぶようです。 UA からのリクエストをさばくワーカープロセスが疲弊せず、パフォーマンスを維持するための仕組みですね。 Ruby で人気のアプリケーションサーバである Unicorn ですが、残念ながらこのリサイクルの機能を持っていません。 どうにかできないかなーと思って調べていたら、この短所を補完する Gem がリリースされていました。 Unicorn Worker Killer | github そのまんまですね。 この Gem でできるのは、以下のようなリサイクルです。 ・一定のリクエスト数を超えたらランダムで再起動する(上限に達したら必ず再起動)。
随分長いことブログ放置してしまったのだけどネタ見付けたので久々の記事。 UnicornはPassengerより遅かった? なんかTwitterで「アクセス少ないときはPassengerよりUnicornのが速いのに、アクセス多くなってきたらその逆になった」って話をみかけたので、それ単にUnicornのworkerが足りないんじゃないの、と返したのだけど、どういうことかという話を少しまとめる。 まず、Unicornのworkerは1プロセスにつき1度に1リクエストしか処理しない。だから例えば、凄い大雑把な計算だけど、平均50msくらいでレスポンスを返すアプリだとすれば、1workerは20req/secくらいは返せるかなと見積もって、ピーク時に100req/secくらいアクセスがありそうだったらworkerを5個くらい立てとくかな、足んなかったらもうちょっとかな、みたいに考える。実際どんくら
Gem Dailliでキャッシュ(memcache)を有効活用してRailsを高速化! Feb 9th, 2013 Tweet 『Dalli』はRailsでmemcachedを使うためのクライアントです。特にWebアプリではアクセスが増えるとデータベース側の負荷が高まり、速度が遅くなってしまいます。そういった問題を解決する手段の一つとしてキャッシュを有効活用するのはすごく大切です! ちなみにWebアプリにおけるキャッシュ。オレオレ事例 - ゆーすけべー日記のキャッシュについての説明がすごくわかりやすいです! memcacheとは? memcacheはデータベースを用いた Web サイトを高速化するために良く用いられるメモリにデータを格納するタイプのKey-Valueストアです。Webアプリでメモリにキャッシュするタイプでは最も有名だと思います。 Macへのインストール MacでHomebr
capistrano-unicornはその名の通りcapistranoでunicornを扱う便利なgemです。 早速Railsのサービスに導入してみた。 試した環境は ruby-1.9.3p194 rails-3.2.9 capistrano-2.13.5 capistrano-unicorn-0.1.6 githubの使い方を参考にGemfileに下記を追加してbundle叩く group :development do gem 'capistrano-unicorn', :require => false end config/deploy.rbでrequireするのとdeploy:restart時のcollbackを登録 # set :application宣言より下に書かないとエラーになる require 'capistrano-unicorn' ... # hot deployを
デプロイしたけど何かおかしい? 先日、Unicornを採用しているウェブアプリで問題が発生しました。デプロイした最新のコードが実行されているように見えますが、時々古いコードの挙動を見せるのです。 今回はそのトラブルシューティングの一部始終を紹介しながら、Unicornのホットデプロイ(ダウンタイムなしでアプリケーションを更新すること)の仕組みをおさらいします。担当は私、去年KRAYに入社しました@irohirokiです。よろしくお願いします。 問題 まずはデプロイ先のサーバにSSHして、Unicornのプロセスを調べてみました。 $ ps ax -H PID TTY STAT TIME COMMAND 3159 ? Sl 0:00 unicorn master (old) -c unicorn.conf -D 3162 ? Sl 0:00 unicorn worker[0] -c unic
unicornはconfで timeout 20 とかやっとくと、20秒以上かかったらそのworkerが殺される。それはいい。問題はその殺され方にあって、タイムアウトしたunicorn workerはmasterにKILLシグナルで強制的に殺される。KILLで殺されてしまうと、worker側でtrapして安全に終了処理をすることができない。 一番困るのは、Railsのloggerは(production環境のデフォルトだと)リクエストが終了するまでバッファリングしているので、リクエストの途中でKILLされてしまうとloggerがflushされない。つまり、unicornのタイムアウト時には、リクエストのログは一切production.logには出力されない。異常時のログが出ないとか、まじで困ると思うんだけど、みんなどうしてんだろ。 これに対処するためにはunicornのコードに手を入れるの
unicorn, memoメモ。 http://annex-forkwell.heroku.com/2012/04/12/server_failure なぜ Forkwell はリリース初日にサーバダウンを繰り返したのか希望が見えたのは、Webサーバの1台目を Passenger に入れ替えたとき。 Unicorn 環境では Load Average がすぐに5とかに上がってどうしようもなかったWebサーバが、Load Average 0.1〜0.2 付近に収まり、しかもそのサーバに振られたリクエストでは一切500エラーが発生しなかったのです。 http://togetter.com/li/266521 http://blog.livedoor.jp/faulist/archives/1782956.html まず、Unicornのworkerは1プロセスにつき1度に1リクエストしか処理し
ちょっとした気まぐれでUnicornを使ってみた。 初Unicorn。 ということでUnicorn用のCapistranoのタスクをdeploy.rbに書いた。 内容はだいたい以下の受け売り。 Capistrano tasks for starting unicorn — Gist Twiwt:Blog / jugyo : Capistrano によるデプロイ時に Unicorn の再起動に失敗することがある問題への対処 namespace :deploy do task :start, :roles => :app, :except => { :no_release => true } do run "cd #{current_path} && BUNDLE_GEMFILE=#{current_path}/Gemfile bundle exec unicorn_rails -c #{cu
unicornで設定ファイルやら、スクリプトなんかをリロードさせようと思うとちょっと面倒。 3段階でシグナルを送ってやらないといけない。 http://unicorn.bogomips.org/SIGNALS.html #まずは、サンプルのスクリプト hiro@Mac-mini% cat main.rb require 'sinatra/base' class Main < Sinatra::Base get '/' do 'foo' end end hiro@Mac-mini% cat config.ru require './main' run Main.new #unicornをデーモンで動かす。 hiro@Mac-mini% unicorn -D hiro@Mac-mini% ps x|grep unicorn 854 ?? R 0:00.02 unicorn master -D
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く