タグ

ブックマーク / spring-mt.hatenablog.com (7)

  • gdbを使ってRuby(2.3.3)のライブプロセスの情報を取得する - CubicLouve

    Rubyのプロセスに対して、非破壊的に中をのぞいてみたいことが時々ありますよね???(詰まっているプロセスとか) 今回、gdbを使ってライブプロセスにアタッチして調べてみました。 準備 今回はAWSamazon Linux上で試しています。 # cat /etc/system-release Amazon Linux AMI release 2016.09 gccは 4.8.3、 gdbは7.6.1を使ってます。 Rubyのバージョンは2.3.3を使いました。 予めrbenvをインストールしておき、rbenvでRubyは管理しておきます。 まずは、Rubyをデバッグ用にビルドします。 ビルドオプションとして、最適化を切っておくのとgdbからデバッグ情報を使えるように指定します。 wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.

    gdbを使ってRuby(2.3.3)のライブプロセスの情報を取得する - CubicLouve
    sonots
    sonots 2016/12/09
  • workerの枯渇状況が分かるrack-server_statusというgemを書いています - CubicLouve

    unicornのwokerのbusy数とidle数の比率がわからなくて、うっかりworkerが枯渇して大変なことになったので、workerの状況を返すエンドポイントを追加するrackミドルウェアを書いています。 github.com ぶっちゃけkazeburoさんのPlack-Middleware-ServerStatus-Liteのruby版です。 github.com この中で使っているkazuhoさん製のParallel-Scoreboardも移植しました。(まだREADMEがない。。。) github.com 元は下記です。 github.com Kazuho@Cybozu Labs: Parallel::Scoreboard でワーカープロセスをモニタリングする方法 使い方 config.ruに下記の用に書く。 # In config.ru use Rack::ServerSta

    workerの枯渇状況が分かるrack-server_statusというgemを書いています - CubicLouve
    sonots
    sonots 2015/11/27
    :D 社で使ってるらしいですね
  • HTMを試す - CubicLouve

    rubykaigi一日目の発表でHTMを使ったパフォーマンス向上の試みが発表されていたので試してみました。 RubyKaigi 2014 | Eliminating Giant VM Lock in Ruby through Hardware Transactional Memory マシンスペック iMac使っています。 % system_profiler SPHardwareDataType Hardware: Hardware Overview: Model Name: iMac Model Identifier: iMac14,2 Processor Name: Intel Core i5 Processor Speed: 3.2 GHz Number of Processors: 1 Total Number of Cores: 4 L2 Cache (per Core): 25

    HTMを試す - CubicLouve
    sonots
    sonots 2014/09/22
  • stackprofを使ってみる - CubicLouve

    追記 2014/09/21 FlameGraphの出し方を追記しました 追記 2017/08/13 stackprofの原理をまとめました。 spring-mt.hatenablog.com rubykaigi 2014終わりましたね。 スタッフの皆様、当にお疲れ様でした。 で、3日目のkeynoteを聞いて、stackprofは使いこなせんとあかんものやと思って、早速試してみました。 RubyKaigi 2014 | Ruby 2.1 in Production stackprof Gemfileにgem 'stackprof'って書いて、bundle installすればOKです。 サンプリング sampleスクリプトはこちら sample stackprof で、StackProf.runが入ってる場合と、入ってない場合の実行時間はこんな感じ 入っている場合 % time bund

    stackprofを使ってみる - CubicLouve
    sonots
    sonots 2014/09/21
    ドキュメントに書いてないけど run(raw: true) とすると raw データが取れて flamegraph が見れるようになるっぽいょ
  • rspecを2.14.1から3.0.0に上げた時のメモ - CubicLouve

    追記 : transpecについて少し追記しました railsアプリで使っていたrspecを2.14.1から3.0.0にあげたら色々落ちたので、それを直したメモ。 まず、 bundle exec rails generate rspec:install して、spec/spec_helper.rbと.rspecを上書きした。 で、新たにspec/rails_helper.rbなるものが出現した。 (spec/spec_helper.rbは予めバックアップとっておいた) https://www.relishapp.com/rspec/rspec-rails/v/3-0/docs/changelog をみると Separate RSpec configuration in generated spec_helper from Rails setup and associated configu

    rspecを2.14.1から3.0.0に上げた時のメモ - CubicLouve
    sonots
    sonots 2014/06/02
    はぁ〜辛い
  • use strict: use warnings; を忘れない - CubicLouve

    どうもperl書いてて、use strict: use warnings;を書かない人がいるらしい。。。。。 vimはファイル作成時に、指定したファイルから雛形が自動的にできるSkeletonAuってのがある。 SkeletonAu使って.pmとか作ったら、skelton呼び出して書けるようにしておく。 skeltonにuse strict: use warnings;書いておけばもう書き忘れないでしょう。 .vimrcに下記設定追加 augroup SkeletonAu autocmd! autocmd BufNewFile *.pl 0r $HOME/dotfiles/.vim/skel/skel.pl autocmd BufNewFile *.pm 0r $HOME/dotfiles/.vim/skel/skel.pm autocmd BufNewFile 00-compile.t

    use strict: use warnings; を忘れない - CubicLouve
    sonots
    sonots 2014/05/16
    "ちなみに、自分はもうperl書いてない。"\(^o^)/
  • Rails4のtransactionでハマった <- これは私の間違いでした - CubicLouve

    申し訳ありません この記事完全に自分の間違いでした。 まず、自分のrailsアプリでは、、もろもろの深淵な理由で、モデルを作るときにActiveRecord::Baseを直接継承せずに、全てのモデルに共通で使うモデルを再定義しています。 なぜこんな事をしているかというと、これまた深淵な理由で、connection poolingができないからです。 まあ、そのモデルの基底クラスでゴニョゴニョしているせいで、ActiveRecord::Base使ってDBに繋ぎに行く場合と、モデルからDBに繋ぎに行く場合でコネクションが別々になっていました。 当に申し訳ないです。。。。 つまりこの問題は、私のrailsアプリのみで起こる問題でした。。。。。 普通にrailsアプリを作っていれば、問題なくロールバックできます。(ActiveRecord::Baseを直接継承して試してみたら問題なくロールバック

    Rails4のtransactionでハマった <- これは私の間違いでした - CubicLouve
    sonots
    sonots 2014/04/18
    なんだと ... ?
  • 1