JMeterによるもっとも簡単な負荷テスト方法


リンクバルの井上です。
今回はJMeterで誰でもできるもっとも簡単な負荷テストをやってみます

JMeterの起動

まずJMeterを起動してみますすると下記のような画面が表示されるかと思います

テストは基本的にはこのテスト計画に対して作成していきます。

 

スレッドグループ設定

まずテスト計画を選択した状態で「編集」を押下し「追加」の「Threads」と見て行くと下記のようにスレッドグループが表示されますのでスレッドグループを選択しましょう

 

スレッドグループを追加すると下記のような画面が表示されます

ここではどのくらいの負荷をかけるか設定をします。

例えば「10のスレッドを20秒の時間をかけて処理開始し、スレッド毎にシナリオを1回だけ実行する」だと下記のようになるのでこの辺をいじれば基本的な負荷は大丈夫です

スレッド数: 10
Ramp-Up期間(秒): 20
ループ回数: 1 (無限ループのチェックボックスはオフにしてください)

 

GETリクエストの設定

次にスレッドグループを選択した状態で「編集」から「追加」、「サンプラー」と見て行くと下記のようにHTTPリクエストが表示されるので追加します。

 

追加したHTTPリクエストに下記のように今回は自分のローカルアプリケーションの設定をしていきます

今回は単純なページアクセスの負荷をかけるのでサーバ名、メソッド、パスのみ設定します

 

 

試験結果の表示

そして負荷をかけたら当然結果を見たいかと思いますので結果表示の設定をします。

また同じ手順でスレッドグループを選択した状態で「追加」、「リスナー」と見ていくと下記のように表示されるので「結果を表で表示」を追加します

 

 

さてようやく準備が整ったので負荷試験を実行します

実行する際は上のメニューにあるので緑の再生ボタンのようなボタンを押下すると実行されます。

すると結果は「結果を表で表示」で以下のように表示されるかと思います。

いかがでしたでしょうか?簡単な負荷試験ならこんなに簡単にテストが作れるんです!

リンクバルではエンジニアを積極募集中です。興味のある方は、こちらまでご応募ください。もちろん、社内の人間と面識があるのでしたら、直接にご連絡いただいてもかまいません。


【WordPress】投稿を集計するただひとつのプラグイン「Site Posts Stats」


社会人2年目エンジニアの関です。

WordPressの開発で、テーマとかプラグインを自作しているとなんだか上級者っぽい感じしませんか?かっこよくないですか?
ということで、私もかっこいい上級者に一歩でも近づきたいのでプラグインを自作してみました。

今回の制作物は以下で公開しています。
概要や画面説明などはREADME.mdを見てください。
https://github.com/hseki-luckey/site-posts-stats

1. 開発に必要なもの
テーマユニットデータ
集計するにはそこそこの投稿数が必要。でも、ちまちま1記事ずつ準備するのもなぁ・・・。と思っていたらちょうどいいのがありました。
簡単なインポートだけで投稿だけでなくカテゴリやタグ、ユーザなども追加できます。超助かります。

Chart.js
グラフを表示するためのライブラリ。今回の主役と言っても過言ではない。
このプラグインでは円グラフ、棒グラフ、折れ線グラフの3種類しか使っていませんが、他にもレーダーチャートやドーナツグラフなど、グラフの種類が充実している地味な優れものです。
ダウンロードしてもよかったのですが、めんどくさかった諸々の事情により外部リンクで読み込んでいます。個人的にアニメーションが好き。

2. 導入方法
① githubからソースをダウンロードし、/wp-content/plugins内にフォルダを設置する

② wp-admin内「インストール済みプラグイン」から「Site Posts Stats」を有効化する

③有効化すると左枠メニューバーに「投稿集計」というメニューが表示される

3. 画面デモ
以下、実際に表示されるグラフです。
女子っぽくグラフの色はピンクで統一してみました。

① 年別投稿数

初期値には「post_date_gmt」が「0000-00-00 00:00:00」になっている投稿が設定されます。(ステータスはおそらく「draft」「 auto-draft」だと思います。)
地味に投稿数0件の表示が大変でした。

②ステータス別投稿数

集計対象となる投稿のpost_typeを「post」と「page」に区切っているため、対象ステータスは「inherit」以外です。
③もなのが9種以上サイト内に投稿ステータスが存在すると対応する色が存在しないのでエラーが起きます。WordPressデフォルトは8種類なので、普通に使う分には問題ないかと。

③投稿タイプ別投稿数

②でも説明しましたが、対象の投稿タイプを9種類以上にするとエラーが起きます。
現在は「post」と「page」に絞っていますが、集計範囲を広げる場合には十分注意してください。

④著者別投稿数

10件以上グラフに表示させるとラベルの文字が小さくなりすぎて何が何だか分からなくなるので、グラフの表示数だけは10件に絞っています。

⑤カテゴリ別投稿数

④と同じくグラフの表示を10件に絞っています。

4. おわりに
今回のプラグイン制作期間はおよそ10時間。
phpやsqlというよりもjsやcssに手間取ってしまいました。行き当たりばったりで画面構成を決めてしまったのと、関数の作り方が雑だったのが反省点です。
まだまだWordPress上級者にはほど遠いので、また違うプラグインを作ってみたいと思います。

☆.。:・★.。:・☆.。:☆.。:・★.。:・☆.。:・★.。:・☆☆.。:・★.。:・☆.。:☆.。:・★.。:*・☆☆

株式会社リンクバルでは一緒に働くエンジニアを募集中です!
気になった方はコチラまで!

☆.。:・★.。:・☆.。:☆.。:・★.。:・☆.。:・★.。:・☆☆.。:・★.。:・☆.。:☆.。:・★.。:*・☆☆


踏み台サーバを用いてTableauに外部のMySQLサーバを接続する


こんにちは、リンクバルの佐藤です。

最近BIツールのTableauを導入し始めたのですが、Tableau単体では外部サーバーのMySQLに接続できません。

開発用DBはAWS上にあるので、接続するには踏み台サーバーを経由する必要があります。

なのでSSH ポートフォワーディング(SSHトンネルともいう)で踏み台サーバーを経由する方法を備忘録的に書いておきます。

一度踏み台にアクセスしてしまえば、あとは放置で大丈夫です。

お膳立て

以下のコマンドを打ってsshポートフォワーディングしましょう。 参考URLはこちらです。

ssh -f -N -L 10000:localhost:3306 ユーザー名@サーバーホスト名 -p 22

これでSSHポートフォワーディングが完了しました。 一応接続できているかをtelnetを使って確認しましょう。 飛ばしても問題ありませんが念のため。

telnet サーバーのホスト名 10000

10000はローカルの10000ポートを指定しています。 先ほど接続先の3306ポートにマッピングしたものと同じポートを指定しています。

Connected to localhost.とターミナルに表示されれば接続されています。 明記してませんでしたが、ここまですべてMacです。Windowsではtelnetはデフォルトでは使えないので、有効化してあげる必要があります。

さてここまでお膳立てしてあげてから、Tableauを起動します。

Tableau起動後

サーバーへMySQLといって、

  • サーバーホスト名
  • ローカルポート番号
  • ユーザー名
  • パスワード

をぽちぽちしてサインインしてください。ここまでの設定で接続できるでしょう。

設定が終わったらググってTableauを存分に使い倒してやりましょう。 Tableauの作図方法は次回書くことにします。 では。


Packerでマシンイメージを管理する

packer

リンクバル技術部の川畑です。サーバの構成管理はどこの会社でも課題になっていると思われます。このあたり構成管理ツールをつかってコードをGitHubとかで管理していきたいですね。構成管理ツールでもマシンイメージ・ミドルウェア・デプロイツールなどいくつかの階層によって適用できるツールがあると思われるのですが、今回はマシンイメージを管理する「Packer」を検証してみました。

1.Packer設定ファイル

  • json形式で記載
  • 「builder」でマシン環境を定義
  • 「provisioners」でサーバ上の動作を定義
  • ここでは「digitalocean.json」で保存
{
"builders": [{
"type": "digitalocean",
"api_token": "<DigitalOceanのAPIトークン>",
"image": "ubuntu-16-04-x64",
"region": "sgp1",
"ssh_username": "root",
"size": "512mb",
"snapshot_name": "linkbal-packer-test {{timestamp}}"
}],
"provisioners": [{
"type": "shell",
"inline": [
"sleep 30",
"sudo apt-get upgrade"
]
}]
}

2.設定ファイル構文チェック

  • Packer設定ファイルの構文が正しいかをチェック
kawabata$ packer validate digital.json
Template validated successfully.

3.イメージ作成

  • Packer設定ファイルの内容を実行して、新しいイメージをビルド
kawabata$ packer build digital.json
digitalocean output will be in this color.

==> digitalocean: Creating temporary ssh key for droplet...
==> digitalocean: Creating droplet...
==> digitalocean: Waiting for droplet to become active...
==> digitalocean: Waiting for SSH to become available...
==> digitalocean: Connected to SSH!
==> digitalocean: Provisioning with shell script: /var/folders/2m/6vlfpttn2_v52m6nmmls03b0_hvfdt/T/packer-shell546848099
digitalocean: Reading package lists...
digitalocean: Building dependency tree...
digitalocean: Reading state information...
digitalocean: Calculating upgrade...
digitalocean: 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
==> digitalocean: Gracefully shutting down droplet...
==> digitalocean: Creating snapshot: linkbal-packer 1485762269
==> digitalocean: Waiting for snapshot to complete...
==> digitalocean: Destroying droplet...
==> digitalocean: Deleting temporary ssh key...
Build 'digitalocean' finished.

==> Builds finished. The artifacts of successful builds are:
--> digitalocean: A snapshot was created: 'linkbal-packer 1485762269' (ID: 22512428) in region 'sgp1'

実行開始後、DigitalOceanコンソールの「Droplets」を確認するとイメージを作成するためにサーバが起動されている

実行完了後、DigitalOceanコンソールの「Images」を確認すると新規イメージが作成されている

DigitalOceanコンソールの「Droplets」からはサーバが削除されている

まずは使ってみた感想

  • 今回はDigitalOceanのデフォルトのイメージからDropletsを作成し、インストールされているパッケージを最新にするといった流れを検証
  • AWS・GCP・AzureなどのIaaSやVMWare・VirtualBoxにも対応しており、ハイブリッドでマシンイメージを管理する時には便利そう
  • Dockerのイメージ管理もできるので、Dockerを使用して開発している環境では、バージョン管理などが便利そう

※参考

リンクバルでは エンジニアを積極募集中 です。興味のある方のご応募お待ちしております。


リンクバルの”お菓子ちゃん”のこだわり(お菓子支給制度について)~ITアレルギーな私の技術部奮闘記~


こんにちは。
リンクバルの山本(♀)です。25歳です。

リンクバルの看板商品「街コン」のイベントプランナーでしたが、ひょんな事からリンクバルのシステム系の部署である技術部に異動となり、
今はシステム開発のディレクターになるべく修行中です。
「~入門」「初心者でも分かる~」が読めないぐらいITアレルギーな私のWEB部での奮闘をお楽しみください。

皆さんは覚えているだろうか。

前回の私の記事の最後のコメント・・・

プログラミングに苦手意識を持っていた私だったけれど、ようやく第1歩を踏み出した記念のブログ。

「そして今日も、エラーと戦っている私なのです」
エラー箇所を探し、修正し、の繰り返し。
私の苦労が滲み出ている・・・ちょっと感動的な文章。

ところがつい先日、夫(ちょっとだけプログラミングできるらしい)からズバット言われたわ。

は?

確かにエラー箇所に小さな”レ点”のようなものが見える。
夫いわく、エラーがでたからって、そんなに四苦八苦する事でもないらしい。

気がつかなかった。不覚。
今までエラーを1から探していた時間を返せ!

という事で、

「そして今日も、エラーと戦っている私なのです。」改め、
「そして今日も、”レ点”しかでない私なのです。」
に変更します。はい。

ココからが本題、株式会社リンクバルの”お菓子支給”制度

全ての社会人の皆さん共通の悩み。それは仕事中の空腹。
仕事中は例えガンマGDPの数値がアレでも空腹なんて我慢してられない。そんな時・・・
リンクバル社員は動きだす。

お菓子があるこの場所へ。
中はこんな感じ。

欲しい味がここにある、それがリンクバルの”お菓子支給制度”

「あーお菓子支給ね。」と楽観視したそこのアナタ。
うちの”お菓子支給制度”を侮るべからず。
不思議と「この味が欲しい」と思ったときに、必ずここにある。
まるで私たちの心を見透かしているように。

例えばこんな感じ、ある日のお菓子事情

ある日の朝、その日は胃が元気が無くて、ちょっと軽めなものが欲しいと思ったの。
すると見て!私の心を見透かすように煎餅が。
さらに、中にサクサク系の何かが入ったチョコレートもある。
胃にやさしい組み合わせだ。

朝一でお菓子エリアに行ったのに、もう誰かが煎餅を持っていった痕跡が見える。
もうお気づきかもしれないが、社員同士で熾烈なお菓子争奪戦が勃発している・・・多分。

午後、少しお疲れぎみ。
こんな時は変り種が欲しいところ・・・と思ったら見て!

こ、これは、中にチョコレートが入ったマシュマロと、ウ〇イ棒ではないか。
中にチョコレートが入ったマシュマロは私の好物なの。
チョコの分量が極めて少ないのに、甘くて美味しいから、(多分)太らないし、満足感がある。

変り種と言えば、旅行のお土産なんかが置かれていて、
”ボーナス”菓子が支給されることもある。

お菓子ちゃんに突撃取材

このお菓子をいつもコーディネートしてくれる通称”お菓子ちゃん”を突撃取材しました。
ちょうどお菓子補充中。

山本「組み合わせの工夫は?」
お菓子ちゃん「まず煎餅とチョコレートは必須。これは代々お菓子ちゃんが受け継いでいるシキタリです。
それ以外はその時のお菓子ちゃんのセンスです。」

なるほど。色々考えながら組み合わせているのですな。

さて、今日のお菓子は

今日はお菓子から素敵なメッセージをもらったわ。
最近は新しい仕事もいただけて更に頑張ったので、誰かからやさしい言葉が欲しかったの。

ありがとう。
でもやっぱり・・・私はこっちをいただくわ。

 

”お菓子支給”のある株式会社リンクバルで
一緒に働くエンジニアを募集中です!
新しい事にチャレンジしたい、もっともっと成長したい、そんな
フロンティアスピリットをお持ちの方が生き生きと働ける会社です。
詳細はコチラ

最後まで読んでくださり、ありがとうございました。