2014年11月17日月曜日

2014年の振り返り太郎

約一年ぶりの投稿である。
来年はちゃんと更新しようかな。

2014年を振り返ると激動だったかな。

仕事関連。
大きなターニングポイントとなったのは
海外出張と転職だったとおもう。

まず初の海外出張。
アテンドしてくださった取引先の方には本当に感謝しています。

海外ベンダーさんの工場見学や、R&Dのエンジニアの方と直接お話しさせてもらったのは本当ににいい経験になった。

詳細は書きませんが。
刺激になったし、自分の中で言い難い焦燥感というか不安を煽られたのも、この時だったと思う。

自分がとても置いていかれてる感というか、このままでいいのかと言う感じですかね。

その海外出張から約8ヶ月後くらいですかね。
まる4年勤めた会社を退職しました。

退職関連でネット界隈で盛り上がっていたタイミングですね。
正直働けて良かったなと思ってます。
責任はつきますが、裁量も貰えるし技術的にチャレンジ出来たことも多かったですし。

人となりもとてもよかった。

もちろん納得行かないことも無かったとは言いませんが、それでも働けてよかったとそう思える会社でしたね。
違う会社にいるからこそさらにそう思えるわけで。

うむ。

新しい会社は、まだ1ヶ月しか働いていませんが、風通しもよく、いろんな技術、文化に触れれるんでかなりいい印象です。
会社に対してロイヤリティを強く持てているのも大きいかなと。

これからもチャレンジしていって、海外の事業所で働けるようすすんでいきたいですね。

プライベートはw

いつものメンツが温かくむかえてくれるので
これからもその関係は続けていきたいですね。

子供もできれば来年には。

そんな感じで以上チラ裏ですいません!

来年もよろしくお願いいたします。







2014年1月9日木曜日

Unixbenchで16core以上も取得太郎

久々の更新である。

 IDCFさんのブログ紹介されていたUnixbenchの記事を参考にさせていただいて
いろいろなサーバの値をとってみたところ、

16core以上になると、数値がとれないことがわかったw ので、16coreでも当てれるようになる方法を探したので書いておくぽ(*´ω`*)モキュ 計測につかったやつは E5-2630L v2 @ 2.40GHzの24core、cent6.4(2.6.32-358.23.2.el6.x86_64)だす。 使ったUnixbenchは5.1.3。 パッチを当てない状態だと
------------------------------------------------------------------------
Benchmark Run: 火  1月 07 2014 15:31:53 - 15:59:53
24 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       27171184.3 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     2528.0 MWIPS (9.7 s, 7 samples)
Execl Throughput                               1867.8 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        811892.2 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          218868.5 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       2083841.6 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1441955.7 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  83075.2 lps   (10.0 s, 7 samples)
Process Creation                               4401.2 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   3081.6 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   1910.2 lpm   (60.0 s, 2 samples)
System Call Overhead                        1882893.2 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   27171184.3   2328.3
Double-Precision Whetstone                       55.0       2528.0    459.6
Execl Throughput                                 43.0       1867.8    434.4
File Copy 1024 bufsize 2000 maxblocks          3960.0     811892.2   2050.2
File Copy 256 bufsize 500 maxblocks            1655.0     218868.5   1322.5
File Copy 4096 bufsize 8000 maxblocks          5800.0    2083841.6   3592.8
Pipe Throughput                               12440.0    1441955.7   1159.1
Pipe-based Context Switching                   4000.0      83075.2    207.7
Process Creation                                126.0       4401.2    349.3
Shell Scripts (1 concurrent)                     42.4       3081.6    726.8
Shell Scripts (8 concurrent)                      6.0       1910.2   3183.7
System Call Overhead                          15000.0    1882893.2   1255.3
                                                                   ========
System Benchmarks Index Score                                        1008.4

------------------------------------------------------------------------
Benchmark Run: 火  1月 07 2014 15:59:53 - 15:59:53
24 CPUs in system; running 24 parallel copies of tests

でとまってしまう。 なので、ここのサイトを参考にパッチを当てる。 fix-limitation.patchをダウンロードして
#Unixbenchの配下に移動して patch 適用

[root@yatta001UnixBench] patch Run fix-limitation.patch
patching file Run
Hunk #1 succeeded at 106 (offset 1 line).
Hunk #2 succeeded at 1329 (offset 1 line).

#diff とってみる

[root@yatta001 UnixBench]# diff -Nur Run  Run.orig  
--- Run 2014-01-09 15:50:03.572928014 +0900
+++ Run.orig    2011-01-18 15:44:53.000000000 +0900
@@ -106,10 +106,10 @@
 
 # Configure the categories to which tests can belong.
 my $testCats = {
-    'system'    => { 'name' => "System Benchmarks", 'maxCopies' => 0 },
+    'system'    => { 'name' => "System Benchmarks", 'maxCopies' => 16 },
     '2d'        => { 'name' => "2D Graphics Benchmarks", 'maxCopies' => 1 },
     '3d'        => { 'name' => "3D Graphics Benchmarks", 'maxCopies' => 1 },
-    'misc'      => { 'name' => "Non-Index Benchmarks", 'maxCopies' => 0 },
+    'misc'      => { 'name' => "Non-Index Benchmarks", 'maxCopies' => 16 },
 };
 
 
@@ -1329,7 +1329,7 @@
         # If the benchmark doesn't want to run with this many copies, skip it.
         my $cat = $params->{'cat'};
         my $maxCopies = $testCats->{$cat}{'maxCopies'};
-        next if ($maxCopies > 0 && $copies > $maxCopies);
+        next if ($copies > $maxCopies);
 
         # Run the benchmark.
         my $bresult = runBenchmark($bench, $params, $verbose, $logFile, $copies);
[root@yatta001 UnixBench]# 

#もっかい計測

------------------------------------------------------------------------
Benchmark Run: 火  1月 07 2014 16:08:01 - 16:36:01
24 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       27170733.7 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     2513.0 MWIPS (9.6 s, 7 samples)
Execl Throughput                               1873.2 lps   (29.8 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        811405.0 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          219160.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       2074592.7 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1437393.2 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  83618.1 lps   (10.0 s, 7 samples)
Process Creation                               4326.3 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   3084.1 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   1912.7 lpm   (60.0 s, 2 samples)
System Call Overhead                        1884694.8 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   27170733.7   2328.3
Double-Precision Whetstone                       55.0       2513.0    456.9
Execl Throughput                                 43.0       1873.2    435.6
File Copy 1024 bufsize 2000 maxblocks          3960.0     811405.0   2049.0
File Copy 256 bufsize 500 maxblocks            1655.0     219160.9   1324.2
File Copy 4096 bufsize 8000 maxblocks          5800.0    2074592.7   3576.9
Pipe Throughput                               12440.0    1437393.2   1155.5
Pipe-based Context Switching                   4000.0      83618.1    209.0
Process Creation                                126.0       4326.3    343.4
Shell Scripts (1 concurrent)                     42.4       3084.1    727.4
Shell Scripts (8 concurrent)                      6.0       1912.7   3187.9
System Call Overhead                          15000.0    1884694.8   1256.5
                                                                   ========
System Benchmarks Index Score                                        1007.0

------------------------------------------------------------------------
Benchmark Run: 火  1月 07 2014 16:36:01 - 17:03:57
24 CPUs in system; running 24 parallel copies of tests

Dhrystone 2 using register variables      357829957.5 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                    58228.3 MWIPS (9.9 s, 7 samples)
Execl Throughput                              62671.5 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        377523.7 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          109032.1 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       1044447.0 KBps  (30.0 s, 2 samples)
Pipe Throughput                            20183039.9 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                4432794.1 lps   (10.0 s, 7 samples)
Process Creation                             120790.3 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                  73993.6 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                  10123.5 lpm   (60.1 s, 2 samples)
System Call Overhead                        5554165.3 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0  357829957.5  30662.4
Double-Precision Whetstone                       55.0      58228.3  10587.0
Execl Throughput                                 43.0      62671.5  14574.8
File Copy 1024 bufsize 2000 maxblocks          3960.0     377523.7    953.3
File Copy 256 bufsize 500 maxblocks            1655.0     109032.1    658.8
File Copy 4096 bufsize 8000 maxblocks          5800.0    1044447.0   1800.8
Pipe Throughput                               12440.0   20183039.9  16224.3
Pipe-based Context Switching                   4000.0    4432794.1  11082.0
Process Creation                                126.0     120790.3   9586.5
Shell Scripts (1 concurrent)                     42.4      73993.6  17451.3
Shell Scripts (8 concurrent)                      6.0      10123.5  16872.4
System Call Overhead                          15000.0    5554165.3   3702.8
                                                                   ========
System Benchmarks Index Score                                        6816.1

これでとれるようになった('A`) 参考文献 http://www.idcf.jp/blog/cloud/unixbench/ https://code.google.com/p/byte-unixbench/issues/detail?id=4

2013年5月1日水曜日

nginx Access-Control-Allow-Originでmultipleな環境に対応する太郎

Ajaxでクロスサイトスクリプティング的なことするとき、アクセス先のサーバに Access-Control-Allow-Originヘッダーを追加しないといけないみたいなんだな。 普通は、 単一サイトからのアクセスでGETだけ許可するのであれば
Access-Control-Allow-Origin http://yattarou.jp;
add_header Access-Control-Allow-Methods GET;
全部許可する場合は
Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET;
でできる。 ただ、大規模なサイトでallで許可するって何されるかわかんないし、ちょっとこわいよねってことで。 指定したサイトだけ許可する方法にしたかったのが、↓の書き方じゃだめだった。
Access-Control-Allow-Origin http://yattarou.jp http://yattarou2.jp;
add_header Access-Control-Allow-Methods GET;
なので、こう書いたらいけたよー yattarou.jpがoriginヘッダーに組み込まれていれば、Access-Control-Allow-Origin:*を付けて上げるっていう ことです。 ただし!!リクエストにorginヘッダーが入っているときのみ有効なので、注意してください。 アプリ、使用するメソッドによっては、originヘッダーが入ってない場合があるので

    server {
        listen       80;
        server_name  yattarou.jp;

        root /home/yattarou;

         location / {

         if ($http_origin ~ "^(http://yattarou.jp|http://yattarou2.jp|http://yattarou3.jp)$") {
           add_header Access-Control-Allow-Origin *;
           add_header Access-Control-Allow-Methods GET;
         }
       }

2013年1月25日金曜日

ubuntu 10.04でvlan×bonding×link aggregation太郎

てこずったのと情報がいろいろ錯綜していたので。
 とりま、ちゃんと設定できた情報メモっときます。
 作業c⌒っ゚д゚)っφ メモメモ...


#
#vlanのid が99と想定
#事前にaptでifenslaveは入れておくこと。
#

cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual
bond-master bond0
bond-primary eth0 eth1

auto eth1
iface eth1 inet manual
bond-master bond0
bond-primary eth0 eth1

auto bond0
iface bond0 inet manual
bond-mode 802.3ad
bond-miimon 100
bond-slaves none

auto vlan99
iface vlan99 inet static
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
network xxx.xxx.xxx.xxx
broadcast xxx.xxx.xxx.xxx
vlan-raw-device bond0
gateway xxx.xxx.xxx.xxx




bond99でもいけるみたいなんだけど、vlanでもいけるみたいな感じだった。

2013年1月24日木曜日

openstack swift swauthの設定太郎

swauthの設定方法のめもだお(*´ω`*)
まずはproxyサーバにswauth入れる。

swiftのversionは1.7.5です。 ubuntuは10.04 LTSです。
#
#swauthをaptで持って来れるように設定
#

vim /etc/apt/sources.list.d/swauth.list

#追記
deb http://gholt.github.com/swauth/lucid lucid main

#update
apt-get update

apt-get install python-swauth swauth-doc




つづいて、proxy-server.confの編集


[pipeline:main]
pipeline = catch_errors healthcheck cache staticweb swauth proxy-server 

[app:proxy-server]
allow_account_management = true


#
#xxx.のIPはLBのインターナルIPにしました。
#

[filter:swauth]
use = egg:swauth#swauth
set log_name = swauth
super_admin_key = swauthkey
default_swift_cluster = cluster_name#http://xxx.xxx.xxx.xxx:8080/v1#http://127.0.0.1:8080/v1




つづいて、確認作業


#
#proxy 設定ファイル読み込み
#

swift-init all reload

#
#アカウント追加
#


swauth-add-user -A http://xxx.xxx.xxx.xxx:8080/auth/ -K swauthkey -a -a yattarou yattaroud yattaraouing



#
#確認してみる。下記のようにStorageURLとかがなってればok
#

swift -A http://xxx.xxx.xxx.xxx:8080/auth/v1.0 -U yattarou:yattaroud -K yattaraouing  stat -v
StorageURL: http://xxx.xxx.xxx.xxx:8080/v1/AUTH_6f760e8b-1782-4ab9-af70-c80012495824
Auth Token: AUTH_tk47aee4fa24f1411489e28301c954bc4d
   Account: AUTH_6f760e8b-1782-4ab9-af70-c80012495824
Containers: 0
   Objects: 0
     Bytes: 0
Accept-Ranges: bytes
X-Timestamp: 1359008441.84255
X-Trans-Id: tx12b86fe3b88e4ec689171f74e9e98d44
Content-Type: text/plain; charset=utf-8


2012年12月26日水曜日

Openstack Swift Objectを間違って消しちゃった太郎

OpenStack Swiftでわざとobjectを消したときの復旧方法 基本はないとは思うんだけど、rmとかでミスって消しちゃいました的な感じの対応用に。 ちなみにファイル間違って消して、べつのレプリカからcpしても使えない(objectとして認識できない?) 状態になるので注意だお(*´ω`*)


#まずはファイルを確認する。ファイルあるよね。

root@yatta-swift01:/srv/node/sdb1/objects/222204# ls -l
total 4
drwxr-xr-x 3 yatta_swift yatta_swift  45 Dec 26 14:15 159
drwxr-xr-x 3 yatta_swift yatta_swift  45 Dec 26 14:15 2bb
drwxr-xr-x 3 yatta_swift yatta_swift  45 Dec 26 14:15 a82
drwxr-xr-x 3 yatta_swift yatta_swift  45 Dec 26 14:15 b24
drwxr-xr-x 3 yatta_swift yatta_swift  45 Dec 26 14:15 e20
-rw------- 1 yatta_swift yatta_swift 223 Dec 26 14:15 hashes.pkl
root@yatta-swift01:/srv/node/sdb1/objects/222204# 
root@yatta-swift01:/srv/node/sdb1/objects/222204# ls -l e20/d8ff1b40757392c4af291b9839ae1e20/1356405624.80957.data 
-rw------- 1 yatta_swift yatta_swift 211481 Dec 26 14:15 e20/d8ff1b40757392c4af291b9839ae1e20/1356405624.80957.data
root@yatta-swift01:/srv/node/sdb1/objects/222204#




#
#ディレクトリ消してみる。ポイントはレプリのチェックをする
#hashes.pklも一緒にけすこと。

root@yatta-swift01:/srv/node/sdb1/objects/222204# rm -fR e20/ hashes.pkl 
root@yatta-swift01:/srv/node/sdb1/objects/222204# ls -ltr
root@yatta-swift01:/srv/node/sdb1/objects/222204# ls -ltr
total 0
drwxr-xr-x 3 cy_yatta cy_yatta 45 Dec 26 14:15 b24
drwxr-xr-x 3 cy_yatta cy_yatta 45 Dec 26 14:15 a82
drwxr-xr-x 3 cy_yatta cy_yatta 45 Dec 26 14:15 2bb
drwxr-xr-x 3 cy_yatta cy_yatta 45 Dec 26 14:15 159

#
#そのうち復旧される
#

root@yatta-swift01:/srv/node/sdb1/objects/222204# ls -ltr
total 4
drwxr-xr-x 3 cy_yatta cy_yatta  45 Dec 26 14:15 b24
drwxr-xr-x 3 cy_yatta cy_yatta  45 Dec 26 14:15 a82
drwxr-xr-x 3 cy_yatta cy_yatta  45 Dec 26 14:15 2bb
drwxr-xr-x 3 cy_yatta cy_yatta  45 Dec 26 14:15 159
drwxr-xr-x 3 cy_yatta cy_yatta  45 Dec 26 14:42 e20
-rw------- 1 cy_yatta cy_yatta 223 Dec 26 14:42 hashes.pkl
root@yatta-swift01:/srv/node/sdb1/objects/222204# ls -l e20/d8ff1b40757392c4af291b9839ae1e20/
total 208
-rw------- 1 cy_yatta cy_yatta 211481 Dec 26 14:42 1356405624.80957.data






ブラウザからも確認できたお(*´ω`*) この復旧方法でいいのかちょっと微妙だけど・・・

2012年12月14日金曜日

Openstack swift objectの情報調べる太郎

Swiftでobjectの情報、どのサーバにレプリカがあるかを確認する方法(*´ω`*)
#実データに対して、swift-object-infoコマンドを実行。
#Ring locationのところにどのサーバにレプリカがあるかが表示される
root@swift-obj03:# swift-object-info /srv/node/sdb1/objects/222228/7a4/d90536ed78c14cf9335ebff89e21f7a4/1355209796.68366.data 
Path: /AUTH_yattarou/test/20121202/22/22/22/33/test8957.jpg
  Account: AUTH_yattarou
  Container: test
  Object: 20121202/22/22/22/33/test8957.jpg
  Object hash: d90536ed78c14cf9335ebff89e21f7a4
Ring locations:
  xxx.xxx.xxx.xx1:6000 - /srv/node/sdb1/objects/222228/7a4/d90536ed78c14cf9335ebff89e21f7a4/1355209796.68366.data
  xxx.xxx.xxx.xx2:6000 - /srv/node/sdb1/objects/222228/7a4/d90536ed78c14cf9335ebff89e21f7a4/1355209796.68366.data
  xxx.xxx.xxx.xx3:6000 - /srv/node/sdb1/objects/222228/7a4/d90536ed78c14cf9335ebff89e21f7a4/1355209796.68366.data
Content-Type: image/jpeg
Timestamp: 2012-12-11 16:09:56.683660 (1355209796.68366)
ETag: 3a650f6dd89d775ef02f48963e821706 (valid)
Content-Length: 211481 (valid)
User Metadata: {}

swift-get-nodesコマンドでも同じような情報がとれるんだけど、表示されたパスをみにいくとファイルがない・・・ 使い方まちがってるんだろうか。