Ruby(rbenv)の設定方法

最近Railsの勉強を始めたので、勉強した内容を記載してみようと思います。 使うの以下のチュートリアルを使ってみる。

Ruby on Rails チュートリアル:実例を使って Rails を学ぼう

Railsを始める前にRubyをインストールする そのために、rbenvをいれる。

$ cd
$ git clone git://github.com/sstephenson/rbenv.git .rbenv
  • bash_profileの設定
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ exec $SHELL
$ source .bash_profile
$ mkdir -p ~/.rbenv/plugins
$ cd ~/.rbenv/plugins
$ git clone git://github.com/sstephenson/ruby-build.git
  • Rubyのインストール
rbenv install 1.9.3-p194

これで環境の設定は完了!

Elasticsearchの集計機能について調べてみた

『サーバ/インフラエンジニア養成読本 ログ収集〜可視化編』 出版記念!執筆者が語る大講演会! で大谷さん(@johtani)がelasticsearchの集計機能について話していたので、少し調べてみた。

集計機能(aggregation)

Aggregations elasticsearchには検索だけでなく結果を多段で分析をすることができるらしい (残念ながらKibana3はサポート外)

Bucketing

(マニュアルの翻訳) * 集約されているドキュメントから何らかの形で抽出された値に基づいて、この家族のコンピュート·メトリクスにおける集計。 値は、典型的には、(フィールドデータを用いて)文書​​のフィールドから抽出されるが、スクリプトを使用して生成することができる。

mentrics

  • バケット集計は集計が行うメトリクスなどの分野にわたってメトリックを計算しませんが、その代わりに、彼らは文書のバケットを作成します。 各バケットは、現在のコンテキスト内でドキュメントがその中に「落ちる」か否かを判断する(集約タイプに応じて)判定基準に関連している。 換言すれば、バケットは、効果的に文書セットを定義する。 バケット自身に加えて、 bucket集計は、各バケットに"に落ちた」との文書の数を計算して返します。

結構すごいなーと思った。使い方とかはもっと調べないといけないので、追記するかもでー

サーバから記憶媒体に通信するプロトコル

サーバから記憶媒体に通信する方法を調べたので、忘れないようにメモメモ

iSCSI(アイスカジー)

アイスカジーって読めなかった。。。

  • 記憶装置とコンピュータの通信に使うSCSIコマンドを、IPネットワーク経由で送受信するためのプロトコルTCP/IPでハードディスクに接続できることが強み。

Fibre Channel 【 ファイバーチャネル 】 FC

  • コンピュータと周辺機器を結ぶためのデータ転送方式の一つ。主に、高い性能が必要なサーバで、コンピュータ本体と外部記憶装置を接続するのに利用されている。機器の接続には同軸ケーブル光ファイバーを使う。光ファイバーだとめっさはやい

H/Wの世界は奥が深い

参考

iSCSIとは - 意味/解説/説明/定義 : IT用語辞典

Fibre Channelとは 〔 ファイバーチャネル 〕 【 FC 】 - 意味/解説/説明/定義 : IT用語辞典

pyenvを入れてみた

仕事でpythonを使うことが増えてきたので、pyenvを入れてみた

pyenv

pyenvは、ローカルディレクトリ毎に のバージョンを指定できるツールです。

yyuu/pyenv · GitHub

インストール

Mac

MacではHomebrewを使っていれるとマニュアルに書いてあったので、ためしてみたい

$ brew update
$ brew install pyenv

が、、、、

$ brew install pyenv
Error: pyenv-20140602 already installed
To install this version, first `brew unlink pyenv'
Warning: It appears you have MacPorts or Fink installed.
Software installed with other package managers causes known problems for
Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again.

そういえば、昔pyenv入れたの忘れてた。。。

ということで一度削除して再度入れ直すことにした

$ brew unlink pyenv
Unlinking /usr/local/Cellar/pyenv/20140602... 0 symlinks removed
$ brew install pyenv
==> Downloading https://github.com/yyuu/pyenv/archive/v20140705.tar.gz
######################################################################## 100.0%
==> Caveats
To enable shims and autocompletion add to your profile:
  if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

To use Homebrew's directories rather than ~/.pyenv add to your profile:
  export PYENV_ROOT=/usr/local/opt/pyenv
==> Summary
🍺  /usr/local/Cellar/pyenv/20140705: 287 files, 2.6M, built in 30 seconds

うまくいった

$ sudo yum install bzip2-devel
$ pyenv local system
$ pyenv rehash
$ pyenv uninstall 2.7.6
$ pyenv install 2.7.6

2.7.6のセットアップが完了!

AWSにElasticsearchをインストールしてみた

AWSにElasticSearchをインストールしてみた AWSのOSはAmazon Linuxをつかってます

  • RPMを取得してインストール
wget 'https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.2.noarch.rpm'
sudo rpm -ivh ./elasticsearch-1.3.2.noarch.rpm
sudo /usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-cloud-aws/2.3.0
  • ElasticSearchを起動
sudo service elasticsearch restart
$  cat /var/log/elasticsearch/elasticsearch.log
[2014-09-06 07:58:50,101][INFO ][node                     ] [Conan the Barbarian] version[1.3.2], pid[1777], build[dee175d/2014-08-13T14:29:30Z]
[2014-09-06 07:58:50,101][INFO ][node                     ] [Conan the Barbarian] initializing ...
[2014-09-06 07:58:50,113][INFO ][plugins                  ] [Conan the Barbarian] loaded [cloud-aws], sites []
[2014-09-06 07:58:52,901][INFO ][node                     ] [Conan the Barbarian] initialized
[2014-09-06 07:58:52,901][INFO ][node                     ] [Conan the Barbarian] starting ...
[2014-09-06 07:58:52,960][INFO ][transport                ] [Conan the Barbarian] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/172.31.4.218:9300]}
[2014-09-06 07:58:52,975][INFO ][discovery                ] [Conan the Barbarian] elasticsearch/4LHaG6gdQEaLrT_RMkNXsA
[2014-09-06 07:58:55,995][INFO ][cluster.service          ] [Conan the Barbarian] new_master [Conan the Barbarian][4LHaG6gdQEaLrT_RMkNXsA][ip-172-31-4-218][inet[/172.31.4.218:9300]], reason: zen-disco-join (elected_as_master)
[2014-09-06 07:58:56,022][INFO ][http                     ] [Conan the Barbarian] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/172.31.4.218:9200]}
[2014-09-06 07:58:56,022][INFO ][node                     ] [Conan the Barbarian] started
[2014-09-06 07:58:56,033][INFO ][gateway                  ] [Conan the Barbarian] recovered [0] indices into cluster_state

次回設定ファイルとかをいじって実際に検索できるようにしたい

ApacheのWorkerってなんだっけ?

最近Apacheの設定をいじる機会があったので備忘録用として記載する

ちなみにWorkerを調整した理由は、

  • フロントエンドからたくさんのリクエストがとんできてサーバー側でさばききれなくなった。
  • さばききれなくなったことで、サーバー側の処理がつまってしまったので、リクエストがさらにさばけなくなった。

apacheのworkerのデフォルト設定

<IfModule worker.c>
StartServers         2
ServerLimit          3
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>
  • StartServers: 起動時に生成される子サーバプロセスの数
  • ServerLimit: 設定可能なサーバプロセス数の上限
  • MaxClients: リクエストに応答するために作成されるスレッドの最大個数
  • MinSpareThreads: アイドルスレッド数の最小個数
  • MaxSpareThreads: アイドルスレッド数の最大個数
  • ThreadsPerChild: 子プロセスそれぞれに生成されるスレッド数の上限
  • MaxRequestsPerChild: 個々の子サーバが稼働中に扱うリクエスト数の上限

なにを変更するか?

色々調べたり教えてもらった結果

  • レスポンスがきすぎた場合 、StartServers、(Min|Max)SpareServers, MaxClientsを小さくして、サーバー側にくるレスポンスを絞る

と効果がでた

また下記のページが色々役にたったので、この内容を勉強してまた書く

参考ページにしたページ

プロのサーバ管理者がApacheのStartServers, (Min|Max)SpareServers, MaxClientsを同じにする理由 - blog.nomadscafe.jp

mpm_common - Apache HTTP サーバ

高負荷をかわすApacheの設定が書かれているブログ

役にたったブログを紹介

Socket backlog tuning for apache - Being root

DSAS開発者の部屋:過負荷をかわす Apache の設定