Posted by & filed under どーでもいいこと.

あけましておめでとうございます。
今年は心機一転というか新しいブログをスタートしました。

tamulab.jp

今後はここでの記事を少しずつ転載して行こうと思っています。
また、新しい記事については極力 tamulab.jp のほうで投稿しようと思います。

引き続きよろしくお願いします。

Posted by & filed under どーでもいいこと.

大晦日らしく、年末年始の酒の肴のレシピ紹介。

年末になると燻製をつくることにしているんですが、なんとな~くレシピっぽいものを公開してみます。

燻製たまご

1. ゆでたまごをつくる
2. つけ液をつくる
  水: 300ml
  塩: 5〜10g
  醤油: 30ml(薄口)
  水を暖めながら塩を溶かしたあとに醤油をまぜまぜ
3. ゆでたまごを向いたらつけ液にいれて2時間位放置
4. つけ液からとりだしたら軽く水で流してから日陰で3時間くらい乾かす
5. 燻製器にいれて1時間半〜2時間燻す

スモチ(スモークチーズ)

1. 冷蔵庫から出して常温に戻す
2. 適当なサイズにカット
3. 日陰で5時間くらい乾かす
4. 燻製器にいれて1時間半〜2時間燻す

できあがり
燻製

Posted by & filed under AWS.

Tags:

昨日、WordPressサイトを作って apachebench してみた t2.nano インスタンスですが、CPUやメモリーあたりについて調べてみた。

CPU情報

$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 63
model name      : Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
stepping        : 2
microcode       : 0x2b
cpu MHz         : 2400.028
cache size      : 30720 KB
physical id     : 0
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs            :
bogomips        : 4800.05
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

メモリー情報

$ cat /proc/meminfo
MemTotal:         503380 kB
MemFree:          352176 kB
MemAvailable:     448604 kB
Buffers:            9112 kB
Cached:            85616 kB
SwapCached:            0 kB
Active:            79212 kB
Inactive:          36128 kB
Active(anon):      20612 kB
Inactive(anon):      260 kB
Active(file):      58600 kB
Inactive(file):    35868 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         20632 kB
Mapped:            17980 kB
Shmem:               268 kB
Slab:              22040 kB
SReclaimable:      12520 kB
SUnreclaim:         9520 kB
KernelStack:        1504 kB
PageTables:         5164 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      251688 kB
Committed_AS:     107600 kB
VmallocTotal:   34359738367 kB
VmallocUsed:        1560 kB
VmallocChunk:   34359732411 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       22528 kB
DirectMap2M:      501760 kB

というわけで、既報のとおり、 vCPUは1つ、メモリーは 0.5GB でした。
なお、CPUは Intel Xeon E5-2676 v3 ということで、 m4 とかそこらへんのインスタンスタイプと同じもののようです。
ちなみに、 t2.micro で2014-08にLaunchしたインスタンスは Intel Xeon E5-2670 v2 でした。

Posted by & filed under AWS, WordPress.

Tags:

AWS EC2 に t2.nano っていうインスタンスタイプが登場したので、さっそく WordPress を入れて、apachebenchしてみた。

ちなみに、 AMIMOTO のAMIは現時点では t2.nano で起動できないようです。
Amazon Linux 2015.09.1 (hvm) の AMI を使ってインスタンスを立ち上げた直後の free コマンド結果

[ec2-user@ip-10-10-10-224 ~]$ free -m
             total       used       free     shared    buffers     cached
Mem:           491        309        182          0          8        249
-/+ buffers/cache:         51        439
Swap:            0          0          0

うん、メモリが 0.5GB です。

Nginx 1.8 + PHP 5.6 + php-fpm + MySQL5.5 + WordPress 4.4(JP) という環境です。

特別なチューニングは行わずそれぞれインストール直後の設定ファイルのまま。
その状態で ab コマンドにてベンチマークしてみました。

5同時アクセスで200リクエスト

$ ab -c 5 -n 200 http://[EIP]/wordpress/
This is ApacheBench, Version 2.3 < $Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking [EIP] (be patient)
Completed 100 requests
Completed 200 requests
Finished 200 requests


Server Software:        nginx/1.8.0
Server Hostname:        [EIP]
Server Port:            80

Document Path:          /wordpress/
Document Length:        10219 bytes

Concurrency Level:      5
Time taken for tests:   28.243 seconds
Complete requests:      200
Failed requests:        0
Write errors:           0
Total transferred:      2108756 bytes
HTML transferred:       2059872 bytes
Requests per second:    7.08 [#/sec] (mean)
Time per request:       706.077 [ms] (mean)
Time per request:       141.215 [ms] (mean, across all concurrent requests)
Transfer rate:          72.91 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       22   25   1.0     25      28
Processing:   152  671  45.1    674     765
Waiting:      145  631  44.0    632     732
Total:        178  696  45.0    699     789

1秒あたり7リクエストまで捌けそうで、1リクエストあたり0.1秒程度というそれなにいい結果じゃないでしょうか。

じゃぁ今度は 100同時アクセス100リクエスト でやってみます。

$ ab -c 100 -n 100 http://[EIP]/wordpress/
(略)
Concurrency Level:      100
Time taken for tests:   20.454 seconds
Complete requests:      100
Failed requests:        76
   (Connect: 0, Receive: 0, Length: 76, Exceptions: 0)
Write errors:           0
Non-2xx responses:      76
Total transferred:      323457 bytes
HTML transferred:       296519 bytes
Requests per second:    4.89 [#/sec] (mean)
Time per request:       20454.459 [ms] (mean)
Time per request:       204.545 [ms] (mean, across all concurrent requests)
Transfer rate:          15.44 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       24   31   3.9     31      38
Processing:   169 10921 5576.7  12132   20246
Waiting:      146 10879 5637.2  12132   20246
Total:        196 10952 5579.0  12163   20276

あ、HTTPステータスが2xxじゃないものが76件でていますね。
同時アクセス20くらいまでが処理できるくらいなんでしょうか。。。

結果
あまりリクエストの多くないサイトだったら、t2.micro よりも t2.nano でいいかも。
t2.nano だと無料利用枠外のようなので、無料利用枠の期間は t2.micro で、無料利用枠が終了したら t2.nano にスケールダウンしちゃえばいいじゃない。
東京リージョンだと t2.nano は $0.01/hr、 t2.micro は $0.02/hr と、t2.micro の半額で利用できます。

以下は素の Amazon Linux に Nginx, PHP などをインストールして WordPress サイトを立ち上げるまでのログ。
Read more »

Posted by & filed under JAWS-UG.

Tags:

どうも、気づけばクリスマスの足音が聞こえる12月です。前回が2月なので10ヶ月ぶりでしょうか。
さて、今回は JAWS-UG Shimane vol.4 で拙いながらも1セッション発表してきましたので、そのときのことをば。。。

今回の JAWS-UG Shimane vol.4 はこんな感じでスタッフセッションオンリーだったわけで、なじぇかトップバッター&MCという大役をこなすことにwww

とりあえず、その時のスライドは例のごとく、 slideshare で後悔公開しています。

他の方のセッションでは、 CloudWatch のカスタムメトリックスを作ってサイト監視したり、Route53の紹介+DNSってなに?という濃い内容でした。

DNSって普段意識していないけど、裏ではかなり重要なんだなと気付かされました。

Posted by & filed under ruby.

Tags:

Joruri とは徳島県で作られた Ruby on Rails を利用したCMSです。地方自治体向けのCMSとして人気があります。
で、使っているとタグ検索のときにかなりレスポンスが遅いなと感じることがありましたので、ちょっと調べてみました。

article_tags テーブルの word カラムにインデックスを張ると速くなりそう。
Read more »

Posted by & filed under AWS.

Tags:

自分メモとして、見積りとかインスタンス間のコストパフォーマンスを調べるときによく見る料金ページのURLをまとめてみました。

このあたりが自分的によく使う感じです。
こうやって並べてみるとURLには次のような規則性があるのがよくわかりますね。
http://aws.amazon.com/jp/<サービス名>/pricing/

Posted by & filed under php.

Tags:

配列の中の特定のキーの値の位置を入れ替えたいときに元の位置のキーを消して、
Arr::insert() や Arr::insert_after_key() で挿入しようと思ったのですが、 StackOverflow で次のようなコードを見つけました。

Swap array values with php

function array_swap(&$array,$swap_a,$swap_b){
   list($array[$swap_a], $array[$swap_b]) = array($array[$swap_b], $array[$swap_a]);
}

$items = array(
  0 => 'contact',
  1 => 'home',
  2 => 'projects'
);
array_swap($items, 0, 1);
var_dump($items);

// OUTPUT
array(3) {
   [0]=> string(4) "home"
   [1]=> string(7) "contact"
   [2]=> string(8) "projects"
}

FuelPHP の Arr クラスを拡張して swap メソッドを作成してみました。

<?php

class Arr extends Fuel\Core\Arr
{
    public static function swap(&$array, $key1, $key2)
    {
        list($array[$key2], $array[$key1]) = array($array[$key1], $array[$key2]);
    }
}

こうすると次のように呼び出せます。

$items = array(
  0 => 'contact',
  1 => 'home',
  2 => 'projects'
);
Arr::swap($items, 0, 1);
var_dump($items);

// OUTPUT
array(3) {
   [0]=> string(4) "home"
   [1]=> string(7) "contact"
   [2]=> string(8) "projects"
}

Arr::swap($items, 2, 1);
var_dump($items);

// OUTPUT
array(3) {
   [0]=> string(4) "home"
   [1]=> string(8) "projects"
   [2]=> string(7) "contact"
}

swap() の 第1引数の配列第2引数で指定したキーの値第3引数で指定したキーの値 を入れ替えます。

Posted by & filed under CentOS.

Tags:

例えば、外部ネットワークに接続されていないサーバにパッケージをインストールしたいときとかに、rpm ファイルを拾ってきて yum localinstall しますが、依存関係パッケージも含めて準備するのは大変です。
yum install だったら依存関係も含めて処理してくれるので、そのときにダウンロードされる rpm をまとめてダウンロードする方法が downloadonly プラグインです。

まずはプラグインのインストールをします。

# yum install yum-plugin-downloadonly

では実際に httpd を例にダウンロードしてみましょう。

# yum install --downloadonly --downloaddir=/tmp httpd

–downloadonly をつけると rpm をダウンロードします。
–downloaddir が rpm の保存先ディレクトリの指定です。
この例だと /tmp 以下に httpd のインストールに必要な rpm が保存されます。
もちろん依存関係にあるパッケージで未インストールのものがあればそれらの rpm も同時にダウンロードされます。

この時は以下の4つの rpm がダウンロードされました。

  • httpd-2.2.15-31.el6_5.x86_64.rpm
  • httpd-tools-2.2.15-31.el6_5.x86_64.rpm
  • apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm
  • mailcap-2.1.31-2.el6.noarch.rpm

これらの rpm をネットワークに接続されていないマシンに移したら、次のコマンドでインストールします。

# yum localinstall \
httpd-2.2.15-31.el6_5.x86_64.rpm \
httpd-tools-2.2.15-31.el6_5.x86_64.rpm \
apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm \
mailcap-2.1.31-2.el6.noarch.rpm

これで、httpd パッケージがインストールされました。

Posted by & filed under AWS, Munin.

Tags:

t2インスタンスなど、AWSのインスタンスのCPU利用率ってインスタンス側でみる使用率と CloudWatch でみる使用率に違いがありますよね。
Munin でも CPU の情報はデフォルトのプラグインで取得できていますが、CloudWatch から取得するプラグインを作成しました。

Munin_AWS-Tokyo_aws.ttsoft.jp_ec2_cpuutilization_-_2014-08-26_18.11.17

Amazon Linux に入っている API tool で CloudWatch のデータを取得してきます。

今のところ以下の3つのプラグインがあります。

  • CPUUtilization
    EC2/CPUUtilization のメトリックスからデータを取得します。
  • CPUCreditBalance
    EC2/CPUCreditBalance のメトリックスからデータを取得します。
  • CPUCreditUsage
    EC2/CPUCreditUsage のメトリックスからデータを取得します。

詳しい使い方、設定の方法は GitHub の README をお読みください。
GitHub: torut/aws-cloudwatch-munin-plugin