Carpe Diem

備忘録。https://github.com/jun06t

負荷ツールのスレッド数・Ramp-Up期間・ループ回数の関係

概要

負荷ツールで負荷をかける時の説明でよく見るのは

項目 計算式
総テスト回数 スレッド数×ループ回数
1秒あたりのリクエスト数 総テスト回数÷Ramp-Up

ですが、例えば分間600アクセスを想定した時に

設定項目
スレッド数 600
Ramp-Up期間 60
ループ回数 1

とした場合と

設定項目
スレッド数 100
Ramp-Up期間 60
ループ回数 6

では先ほどの説明だとどちらも総テスト回数1秒あたりのリクエスト数は同じです。
それぞれのケースの時にかかる負荷の違いが分からなかったので調べてみました。

続きを読む

Fluentdを0.14にバージョンアップした時の対応

概要

Fluentdを0.12から0.14へアップデートしました。
その時にtd-agent.confやらpluginで色々と変更点があったのでその時の対応をまとめます。

環境

  • fluentd 0.14.21
  • fluent-plugin-s3 1.0.0.rc6

td-agent.confの変更点

root_dirができた

以前はbuffer毎に

<match pattern>
  buffer_type file
  buffer_path /var/fluentd/buffer/
  ...
</match>

といった感じに1つ1つpathを設定する必要がありましたが、

<system>
  root_dir /path/fluentd/root
</system>

と設定すれば、システム内の/path/fluentd/root/worker0/plugin_idに保存されるようになります。

続きを読む

GolangのSliceを関数の引数に渡した時の挙動

概要

Sliceの構造を始め、関数で呼び出した場合の挙動やappendなどsliceを操作した場合どうなるかをまとめました。

環境

Sliceの構造

Sliceは以下のような3つの要素でなりたっています。

  • 配列へのポインタ
  • length
  • capacity

図示すると以下です。

f:id:quoll00:20170926151254p:plain

ref: Go Slices: usage and internals - The Go Blog

続きを読む

Terraformで過去に作ったリソースを別ディレクトリに分けたい

概要

Terraformを使う上で、DBなどのデータ系のリソースはそうそう変更することはないので、オペミスなどを防ぐために別ディレクトリに分けておくと安心です。
しかし既に作ってしまっていた場合、*.tfとともにその部分のterraform.tfstateを移動しなくてはいけないですが、手動でterraform.tfstateをいじるのは非常に大変です。
そこで使えるのがstate mvというコマンドです。

環境

  • Terraform 0.10.2
続きを読む

AngularのInjectorとProviderとDependencyの関係

概要

過去の記事で

christina04.hatenablog.com

を書いた時に、AngularのInjectorProviderDependencyの関係を理解していないとよく分からないと思ったので追記的にまとめます。

環境

  • Angular 4.3.5

覚え方

結論から言うと、以下のように考えるとすっきりします。

項目 役割
Injector 料理人
Provider レシピ
Dependency 料理
続きを読む

Scratch imageでtime: missing Location

概要

以前以下の記事でscratch imageの作成方法を紹介しました。

christina04.hatenablog.com

しかしgolangのコードによっては以下のpanicが起きることがあります。

panic: time: missing Location in call to Time.In

今回はその対応方法です。

環境

  • golang 1.8.3
  • docker 17.06.0-ce
続きを読む

BehaviorSubjectでAPIの結果をキャッシュ

概要

クライアントからのAPIコールは可能であれば避けた方がサーバの負荷も下がり、ユーザの体感速度も上がります。
1度取得すればほぼ変わらないデータなどは、最初にAPIコールした後はできれば避けたいです。
一方でcookieやlocalstorageで管理するほどでもない、というときはBehaviorSubjectを利用します。

環境

  • Angular 4.3.4
  • rxjs 5.4.2

BehaviorSubjectとは

基本的な動作

BehaviorSubjectの大きな特徴は直前にonNextで渡された値を保持し、subscribe()getValue()するとその保持していた値を取得できるところです。

f:id:quoll00:20170812194105p:plain

ref: ReactiveX - Subject

続きを読む