先日、那須塩原にて田植えを取材してきました。
場所は那須の清流「箒川」のすぐ傍で、水がとてもきれいで、
ここでとれるお米もおいしいです。(試食させてもらいました)
天気が良く、とても気持ち良い一日でした。。。
どうして私が田植えの取材をしたのかと言うと、
弊社初のショッピングサイト、「大盛屋」様サイトを構築しており、
無事本日オープンすることができました!
お米と蜂蜜の小さなお店ですが、これから季節の野菜なども
頑張って作っていますので、できれば応援して頂けるとありがたいです。
Webアプリケーション等の負荷テストに利用する、JMeterのインストールと簡単な使い方です。
1.JMeterを、下記URLからダウンロードします。
http://jmeter.apache.org/download_jmeter.cgi
2.ダウンロードしたファイルを適当な場所で解凍します。そして、binフォルダの
jmeter.batファイルを起動します。
3.JMeterが起動します。
4.まず、テストを追加します。画面左の「テスト計画」を右クリックし、
「追加」→「Threads(Users)」→「Setup Thread Groups」を選択します。
5.名前は適当につけます。スレッドプロパティの「スレッド数」「Ramp-Up時間」「ループ回数」を指定します。
例えば、スレッド数50、Ramp-Up時間5秒であれば、1秒あたり10スレッド実行されることになります。
スケジューラで開始時刻等を指定することも可能です。
6.次に、そのスレッドで実行するHTTPリクエストを指定します。4〜5で作成したスレッドグループを右クリックして
「追加」→「サンプラー」→「HTTPリクエスト」を選択します。
7.HTTPリスエストのWebサーバ、パス、パラメータ等を指定します。
8.テスト結果を確認するために、リスナーを準備しておきます。リスナーはいろいろありますが、
ここではスレッドグループを右クリックして、
「追加」→「リスナー」→「結果をグラフ表示(詳細)」を選択します。
9.テストを実行します。実行するテスト計画が選択された状態で、メニューの
「実行」→「開始」を選択します。
10.8で作成したリスナーを選択すると、テスト結果が表示されます。
応答結果や速度を計測することができます。
実際にWebアプリケーションの負荷テストを行う場合、セッションの設定等を行うことや、多くのクライアントから
同時アクセスを想定する場合、JMeterを起動するPCを複数用意し、ある程度のスレッド数を分けて実行する
必要があります。今後業務で使っていく中で分かったことがあればまた載せたいと思います。
Javaでキャッシュを実現するためのライブラリとして、Apache JakartaプロジェクトのJCS(Java Caching System)があります。Java言語を用いたWEBアプリケーションやスタンドアロンシステムで使えそうなので、簡単なサンプルプログラムを作成してみました。
JCSの概要については、下記URLに解説記事がありました。
http://www.ibm.com/developerworks/jp/java/library/j-jcs.html
JCSはこちらからダウンロードできます。
http://commons.apache.org/jcs/DownloadPage.html
依存するライブラリとして、concurrentパッケージが必要です。
http://g.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html
サンプルですが、まず、JCSの構成ファイル(cache.ccf)を作成して実行時のカレントディレクトリに配置します。まずは基本的な構成として、純粋にメモリーを利用してキャッシュを構成してみました。
# DEFAULT CACHE REGION
jcs.default=
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=10
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
MaxObjectsにオブジェクト最大保持数を指定します。ここではテストのため、10を設定しました。
実際に簡単なオブジェクトを11個キャッシュに保存して、どうなるか試してみました。実行すると、古いキャッシュから2個が消えていました。つまりオブジェクト最大保持数−1個のオブジェクトがキャッシュに保存されている、ということになりそうです。キャッシュを見てなければファイルやDBから取得する、という使い方ができそうです。
以下、サンプルソースと実行結果です。
------ サンプルソース ------
package com.hcc_soft.geo.test;
import java.io.Serializable;
import org.apache.jcs.JCS;
import org.apache.jcs.access.exception.CacheException;
public class JCSTest {
// キャッシュ領域名
private static final String CACHE_REGION_NAME = "hcc";
// キャッシュオブジェクト
private JCS cache = null;
public void test() {
try {
// キャッシュ初期化
setCache(JCS.getInstance(CACHE_REGION_NAME));
// 11人分のオブジェクトをキャッシュに入れる
for(int i = 0; i < 11; i++) {
Person person = new Person("大川"+(i+1), "栃木", "000-0000");
cache.put("ohkawa"+(i+1), person);
}
// 11人分のオブジェクトをキャッシュから読む
for(int i = 0; i < 11; i++) {
Person person1 = (Person)cache.get("ohkawa"+(i+1));
System.out.println(person1 == null? "null":person1.toString());
}
} catch (CacheException e) {
e.printStackTrace();
}
}
public static void main(String args[]){
JCSTest s = new JCSTest();
s.test();
}
public JCS getCache() {
return cache;
}
public void setCache(JCS cache) {
this.cache = cache;
}
protected class Person implements Serializable {
protected String name_;
protected String address_;
protected String phone_;
public Person(String name, String address, String phone) {
name_ = name;
address_ = address;
phone_ = phone;
}
public String toString() {
return "名前:"+name_+" 住所:"+address_+" 電話番号:"+phone_;
}
}
}
------ 実行結果 ------
null ←古くて消えたキャッシュ
null ←古くて消えたキャッシュ
名前:大川3 住所:栃木 電話番号:000-0000
名前:大川4 住所:栃木 電話番号:000-0000
名前:大川5 住所:栃木 電話番号:000-0000
名前:大川6 住所:栃木 電話番号:000-0000
名前:大川7 住所:栃木 電話番号:000-0000
名前:大川8 住所:栃木 電話番号:000-0000
名前:大川9 住所:栃木 電話番号:000-0000
名前:大川10 住所:栃木 電話番号:000-0000
名前:大川11 住所:栃木 電話番号:000-0000












