金曜日, 10月 27, 2006

[EC2] Jmeter@EC2成功!

EC2であげた3台のサーバ(Jmeter-Server)と、モニタ用のモニタマシン(Jmeter-Clinetを動かす。自身は負荷はかけない)の計4台であるサイトへの負荷試験を行った。

念のため、モニタマシンのTCP設定をレジストリで変更(RMI通信が意外に大変そう故)。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip]"
MaxUserPort"=dword:00002ee0"
TcpTimedWaitDelay"=dword:0000001e

jmeter-serverは先に上げていても負荷がけリクエストを一定時間受けないと勝手にとまってしまう様子。。(このときクライアントは"Bad Object Call"エラー)。これには多少はまった。

結果、負荷は想定どおりかけることができ(1インスタンスあたり120スレッド)、各種リソース消費もほぼ気にする値ではなかった。

これを考えると、EC2のインスタンスあたり300程度までは十分いけると考えられる(※)。

ただし、上記は走らせるシナリオのサイズや複雑度により相当変動するものと思われるので、いくつかのパターンで試して見る必要がありそう。

(※)

また、そのMAX負荷時におけるモニタの負荷は、統計情報だけの取得としていたこともあり、NW帯域は4M~6M程度、CPUは45%程度の消費であった(PentiumM/1G)。

同時にインスタンスのCPUも(たまにガベコレが動くのか)30%くらいまで跳ねることはあるものの、負荷がけ自体では1%から2%程度のCPU消費だった。

水曜日, 10月 25, 2006

[EC2] EC2のセキュリティグループ(FW)操作

こっちで追加。
G:\EC2\bin>ec2-authorize default -P tcp -p 1099 -s 125.174.131.44/32

こっちで(上記の設定だけを)削除。
G:\EC2\bin>ec2-revoke default -P tcp -p 1099 -s 125.174.131.44/32

ちなみに、Jmeterを使う(RMIを使う)場合には、1099だけ開けてもだめだった。

G:\EC2\bin>ec2-authorize default -P tcp -p 0-65000 -s 221.186.76.xxx/29

なんかなぁ。。。EC2のマニュアルはこちら

火曜日, 10月 24, 2006

[EC2] Jmeterの奇怪なうごき2

あと、サーバ側ではjmeter.logで下記行が出るまで待つこと.
2006/10/24 19:07:37 INFO - jmeter.engine.RemoteJMeterEngineImpl: Bound to registry on port 1099

この行まで出た段階ではクライアントで"Bad call to remote host"と表示され接続できない.

2006/10/24 19:04:27 INFO - jmeter.engine.StandardJMeterEngine: To revert to the earlier behaviour, define jmeterengine.startlistenerslater=false

また、Listenは始まっているのにクライアント側に"java.rmi.NoSuchObjectException"が出るようになったら、サーバ側をリスタートする必要がある様子。

[EC2] Jmeterの奇怪なうごき

なぜかJmeterでリモート実行をしようとすると「localhost接続で」失敗し始める。。
googleでは下記のQAがあったりした(複数のEthを持っていると変になるのかな)。

">http://mail-archives.apache.org/mod_mbox/jakarta-jmeter-user/200410.mbox/

で、いろいろ調べた結果サーバ(リモートテストを実行する側)が自分のIPを正しく取れていないことが判明.

これで解決.

[tf0054@bamboo bin ]$ diff ~/jmeter-server.org ./jmeter-server
30c30
< `dirname $0`/jmeter -Dserver_port=${SERVER_PORT:-1099} -s "$@" --- > `dirname $0`/jmeter -Djava.rmi.server.hostname=204.13.171.xxx -Dserver_port=${SERVER_PORT:-1099} -s "$@"
[tf0054@bamboo bin ]$

月曜日, 10月 23, 2006

[EC2] インスタンスの操作(追加と削除)

今上がっているインスタンスの確認。EC2デフォルトで用意されているAMIであげています。

G:\EC2\bin>ec2-describe-instances
RESERVATION r-93c92cfa 246339835965 default
INSTANCE i-b5a541dc ami-6dae4b04 domU-12-31-33-00-xx-xx.usma1.com
pute.amazonaws.com running gsg-keypair

G:\EC2\bin>

追加は、あげるイメージ(AMI)を指定してrunするだけ(ここでrootさんのauthorized_keysに入れておいてもらう鍵を指定(-k)しないと操作のしようが無いインスタンスが上がるので注意)。

G:\EC2\bin>ec2-run-instances ami-6dae4b04 -n 2 -g default -k gsg-keypair
RESERVATION r-f32cc99a 246339835965 default
INSTANCE i-d9ee0ab0 ami-6dae4b04 pending
INSTANCE i-d8ee0ab1 ami-6dae4b04 pending

G:\EC2\bin>

しばらく待つと上がってきます。

G:\EC2\bin>ec2-describe-instances
RESERVATION r-93c92cfa 246339835965 default
INSTANCE i-b5a541dc ami-6dae4b04 domU-12-31-33-00-xx-xx.usma1.com
pute.amazonaws.com running gsg-keypair
RESERVATION r-f32cc99a 246339835965 default
INSTANCE i-d9ee0ab0 ami-6dae4b04 domU-12-31-34-00-xx-xx.usma2.com
pute.amazonaws.com running
INSTANCE i-d8ee0ab1 ami-6dae4b04 domU-12-31-34-00-xx-xx.usma2.com
pute.amazonaws.com running

G:\EC2\bin>

ちなみに落とし方はこちら。

G:\EC2\bin>ec2-terminate-instances i-d9ee0ab0
INSTANCE i-d9ee0ab0 running shutting-down

G:\EC2\bin>

日曜日, 10月 22, 2006

[Catalyst] 初期化@Windows

Catalystは前少しLinuxで試したけれど、今回はWindowsのActivePerlでチャレンジ。
まずはなんにせよ初期化の仕方から。

D:\Catalyst>c:\Perl\site\bin\catalyst.bat TEST
created "TEST"
created "TEST\script"
created "TEST\lib"
created "TEST\root"
created "TEST\root\static"
created "TEST\root\static\images"
created "TEST\t"
created "TEST\lib\TEST"
created "TEST\lib\TEST\Model"
created "TEST\lib\TEST\View"
created "TEST\lib\TEST\Controller"
created "TEST\test.yml"
created "TEST\lib\TEST.pm"
created "TEST\lib\TEST\Controller\Root.pm"
created "TEST/README"
created "TEST/Changes"
created "TEST\t/01app.t"
created "TEST\t/02pod.t"
created "TEST\t/03podcoverage.t"
created "TEST\root\static\images\catalyst_logo.png"
created "TEST\root\static\images\btn_120x50_built.png"
created "TEST\root\static\images\btn_120x50_built_shadow.png"
created "TEST\root\static\images\btn_120x50_powered.png"
created "TEST\root\static\images\btn_120x50_powered_shadow.png"
created "TEST\root\static\images\btn_88x31_built.png"
created "TEST\root\static\images\btn_88x31_built_shadow.png"
created "TEST\root\static\images\btn_88x31_powered.png"
created "TEST\root\static\images\btn_88x31_powered_shadow.png"
created "TEST\root\favicon.ico"
created "TEST/Makefile.PL"
created "TEST\script/test_cgi.pl"
created "TEST\script/test_fastcgi.pl"
created "TEST\script/test_server.pl"
created "TEST\script/test_test.pl"
created "TEST\script/test_create.pl"

D:\Catalyst>

土曜日, 10月 21, 2006

[EC2] 上がるインスタンスは・・

EC2のdmesgはこんな感じ。

[root@domu-12-31-33-00-01-83 mail]# dmesg
Linux version 2.6.16-xenU (builder@patchbat.amazonsa) (gcc version 4.0.1 20050727 (Red Hat 4.0.1-5)) #1 SMP Mon Aug 14 19:11:10 SAST 2006
BIOS-provided physical RAM map:
Xen: 0000000000000000 - 000000006a400000 (usable)
980MB HIGHMEM available.
727MB LOWMEM available.
NX (Execute Disable) protection: active
On node 0 totalpages: 437248
DMA zone: 186366 pages, LIFO batch:31
DMA32 zone: 0 pages, LIFO batch:0
Normal zone: 0 pages, LIFO batch:0
HighMem zone: 250882 pages, LIFO batch:31
IRQ lockup detection disabled
Built 1 zonelists
Kernel command line: root=/dev/sda1 ro 4
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 65536 bytes)
Xen reported: 2405.450 MHz processor.
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Software IO TLB disabled
vmalloc area: ee000000-f53fe000, maxmem 2d7fe000
Memory: 1718700k/1748992k available (1958k kernel code, 20948k reserved, 620k data, 144k init, 1003528k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 4812.57 BogoMIPS (lpj=24062865)
Mount-cache hash table entries: 512
CPU: After generic identify, caps: 078bc3f1 e3d3fbff 00000000 00000000 00000001 00000000 00000001
CPU: After vendor identify, caps: 078bc3f1 e3d3fbff 00000000 00000000 00000001 00000000 00000001
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 1024K (64 bytes/line)
CPU: After all inits, caps: 078bc3f1 e3d3fbff 00000000 00000010 00000001 00000000 00000001
Checking 'hlt' instruction... OK.
Brought up 1 CPUs
migration_cost=0
Grant table initialized
NET: Registered protocol family 16
Brought up 1 CPUs
xen_mem: Initialising balloon driver.
highmem bounce pool size: 64 pages
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
Initializing Cryptographic API
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
i8042.c: No controller found.
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
Xen virtual console successfully installed as tty1
Event-channel device installed.
netfront: Initialising virtual ethernet driver.
mice: PS/2 mouse device common for all mice
md: md driver 0.90.3 MAX_MD_DEVS=256, MD_SB_DISKS=27
md: bitmap version 4.39
NET: Registered protocol family 2
Registering block device major 8
IP route cache hash table entries: 65536 (order: 6, 262144 bytes)
TCP established hash table entries: 262144 (order: 9, 2097152 bytes)
TCP bind hash table entries: 65536 (order: 7, 524288 bytes)
TCP: Hash tables configured (established 262144 bind 65536)
TCP reno registered
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
NET: Registered protocol family 15
Using IPI No-Shortcut mode
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Freeing unused kernel memory: 144k freed

***************************************************************
***************************************************************
** WARNING: Currently emulating unsupported memory accesses **
** in /lib/tls glibc libraries. The emulation is **
** slow. To ensure full performance you should **
** install a 'xen-friendly' (nosegneg) version of **
** the library, or disable tls support by executing **
** the following as root: **
** mv /lib/tls /lib/tls.disabled **
** Offending process: init (pid=1) **
***************************************************************
***************************************************************

Continuing...

md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
dm_mod: no version for "struct_module" found: kernel tainted.
device-mapper: 4.5.0-ioctl (2005-10-04) initialised: dm-devel@redhat.com
EXT3 FS on sda1, internal journal
kjournald starting. Commit interval 5 seconds
EXT3 FS on sda2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
[root@domu-12-31-33-00-01-83 mail]#

金曜日, 10月 20, 2006

[EC2] やはりマスカレードからじゃ無理かも

VPNでPCをむりやり固定IP化+amazon-fwを空けてやってみたがやはり失敗。
サーバ側のログを見てみると、やはりマスカレードの影響のだった(PCのローカルIPに向かって通信を失敗している)。

2006/10/20 09:55:03 ERROR - jmeter.samplers.StandardSampleSender: sampleOccurred java.rmi.ConnectIOException: Exception creating connection to: 192.168.11.3; nested exception is:
java.net.NoRouteToHostException: No route to host
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at org.apache.jmeter.samplers.RemoteSampleListenerImpl_Stub.sampleOccurred(Unknown Source)
at org.apache.jmeter.samplers.StandardSampleSender.SampleOccurred(StandardSampleSender.java:66)
at org.apache.jmeter.samplers.RemoteListenerWrapper.sampleOccurred(RemoteListenerWrapper.java:85)
at org.apache.jmeter.threads.ListenerNotifier.notifyListeners(ListenerNotifier.java:239)
at org.apache.jmeter.threads.JMeterThread.notifyListeners(JMeterThread.java:466)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:255)
at java.lang.Thread.run(Unknown Source)
Caused by: java.net.NoRouteToHostException: No route to host
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.(Unknown Source)
at java.net.Socket.(Unknown Source)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source)
... 11 more

2006/10/20 09:55:03 INFO - jmeter.threads.JMeterThread: Thread TEST 1-77 is done

どうするかなー。

[EC2] EC2上にJMeterサーバを入れて。。

PC側クライアントからEC2上のJMeterサーバ を使ってみようとしているがうまくいかない。

クライアントからのアクセス許可はamazon-fwを抜けられているはずだけど。
G:\EC2\bin>ec2-authorize apache -P tcp -p 1099 1099 -s 202.178.xxx.105/32

JMeterはRMIというのを使って通信しているらしいので、マスカレードされたクライアントから接続してもうまくいかないのかな(あ、でもtelnet 1099もだめだから別の理由だな)。

[EC2] 自分の設定を確認するには

◇環境変数の設定
G:\EC2>type setenv.bat
set JAVA_HOME=C:\Program Files\Java\jre1.5.0_06
set EC2_HOME=G:\EC2
set PATH=%PATH%;%EC2_HOME%\bin
set EC2_PRIVATE_KEY=%EC2_HOME%\pk-6NXXXXYYUABVSJAXUDBEDGSSRYFTVAG6.pem
set EC2_CERT=%EC2_HOME%\cert-6NXXXXYYUABVSJAXUDBEDGSSRYFTVAG6.pem
set CLASSPATH=%EC2_HOME%\lib
G:\EC2>

◆インスタンスを確認する
G:\EC2\bin>ec2-describe-instances
RESERVATION r-93c92cfa 246339835965 default
INSTANCE i-b5a541dc ami-6dae4b04 domU-12-31-33-00-01-83.usma1.com
pute.amazonaws.com running gsg-keypair

◆セキュリティグループを確認する
G:\EC2\bin>ec2-describe-group
GROUP 246339835965 apache TAKESHI
PERMISSION 246339835965 apache ALLOWS tcp 80 80 FROM
CIDR 0.0.0.0/0
GROUP 246339835965 default default group
PERMISSION 246339835965 default ALLOWS all FROM
USER 246339835965 GRPNAME default
PERMISSION 246339835965 default ALLOWS tcp 22 22 FROM
CIDR 0.0.0.0/0
PERMISSION 246339835965 default ALLOWS tcp 80 80 FROM
CIDR 0.0.0.0/0

◆defaultにルール追加
G:\EC2\bin>ec2-authorize default -P tcp -p 1099 1099 -s 202.178.93.105/32
GROUP default
PERMISSION default ALLOWS tcp 1099 1099 FROM CIDR
202.178.93.105/32

◆apacheグループとdefaultグループの2つがあったのでapacheを削除
G:\EC2\bin>ec2-delete-group apache
GROUP apache

◆セキュリティグループを確認する
G:\EC2\bin>ec2-describe-group
GROUP 246339835965 default default group
PERMISSION 246339835965 default ALLOWS all FROM
USER 246339835965 GRPNAME default
PERMISSION 246339835965 default ALLOWS tcp 22 22 FROM
CIDR 0.0.0.0/0
PERMISSION 246339835965 default ALLOWS tcp 80 80 FROM
CIDR 0.0.0.0/0
PERMISSION 246339835965 default ALLOWS tcp 1099 1099 FROM
CIDR 202.178.93.105/32

木曜日, 10月 19, 2006

[EC2] 日本への通信経路は


[tf0054@domu-12-31-34-00-01-f1 ~]$ traceroute dns01.xxx.jp
traceroute to dns01.xxx.jp (210.148.164.xxx), 30 hops max, 38 byte packets
1 dom0-216-182-234-224 (216.182.234.224) 0.100 ms 0.039 ms 0.034 ms
2 othr-216-182-234-194 (216.182.234.194) 0.479 ms 0.254 ms 0.212 ms
3 othr-216-182-232-9 (216.182.232.9) 0.433 ms 0.263 ms 0.218 ms
4 othr-216-182-232-19 (216.182.232.19) 0.691 ms 0.607 ms 0.600 ms
5 ge-1-1-5.was10.ip.tiscali.net (213.200.84.69) 0.669 ms 0.687 ms 0.653 ms
6 * * *
7 lax002bb00.IIJ.net (216.98.96.175) 82.227 ms 82.033 ms 82.146 ms
8 tky008bb00.IIJ.Net (216.98.96.178) 183.947 ms 183.956 ms 183.934 ms
9 ykh002bb01.IIJ.Net (58.138.98.23) 190.747 ms 190.714 ms 190.718 ms
10 ykh002gate00a.IIJ.Net (210.130.199.230) 190.880 ms 190.615 ms 190.617 ms
11 210.138.29.xxx (210.138.29.xxx) 190.601 ms 190.797 ms 190.881 ms
12 * * *

[tf0054@domu-12-31-34-00-01-f1 ~]$

水曜日, 10月 18, 2006

[EC2] 日本からの通信経路は


d:\>tracert domu-12-31-34-00-01-f1.usma2.compute.
amazonaws.com

Tracing route to domU-12-31-34-00-01-F1.usma2.compute.amazonaws.com [216.182.237
.225]
over a maximum of 30 hops:

1 16 ms 15 ms 42 ms 61.206.xxx.1.myip.interlink.or.jp [61.206.113.1]

2 18 ms 18 ms 21 ms master-gate.interlink.ad.jp [203.141.128.1]
3 19 ms 19 ms 19 ms 81.143090012.odn.ne.jp [143.90.12.81]
4 21 ms 19 ms 24 ms TKErw-01G1-1.nw.odn.ad.jp [143.90.146.1]
5 20 ms 24 ms 25 ms 143.90.160.173
6 21 ms 21 ms 20 ms cba-gw6-pos7-0.gw.odn.ad.jp [210.142.163.62]
7 137 ms 135 ms 132 ms pax-gw7-pos6-0.gw.odn.ad.jp [210.142.161.38]
8 120 ms 120 ms 121 ms ge-10-0.hsa4.SanJose1.Level3.net [4.68.111.125]

9 118 ms 137 ms 119 ms so-2-3-0.bbr1.SanJose1.Level3.net [4.68.121.225]

10 207 ms 224 ms 217 ms ae-0-0.bbr1.Washington1.Level3.net [64.159.0.229
]
11 208 ms 205 ms 206 ms ae-11-55.car1.Washington1.Level3.net [4.68.121.1
46]
12 205 ms 206 ms 209 ms AMAZONCOM.car1.Washington1.Level3.net [4.79.228.
46]
13 217 ms 228 ms 207 ms othr-216-182-224-16.usma1.compute.amazonaws.com
[216.182.224.16]
14 209 ms 207 ms 207 ms othr-216-182-232-18.usma2.compute.amazonaws.com
[216.182.232.18]
15 240 ms 242 ms 207 ms dom0-216-182-234-224.usma2.compute.amazonaws.com
[216.182.234.224]
16 * * * Request timed out.
d:\>

月曜日, 10月 16, 2006

"Yahoo UI Library"で2つほど

これ に注意しつつ,,YUIのカレンダーを社内のウェブサイト運用ツールで使ってみた.

Firefoxでは特に気にせず使えるだけど,IEでは「未知のエラー」といって怒られた.いろいろ調べたところ,結局BODYタグの直下にカレンダー用DIVを作らないといけないことが判明(というかIEはjsのデバッグしずらい).

そういうものなのか.

あと,日本語版の例は2up(2ヶ月分がポップアップする)のだけどこれは1ヶ月だけにできないのかな?(簡単にはできない様子だけど..).

日曜日, 10月 08, 2006

ActivePerlでEXEを作成2

Perlのexe化にはいくつか方法があるらしい
ActivePerlの商品版は、$150と書いてあるが、以外に安いね。

WindowsとなればGUIが使いたいが、どうなのだろう。
PARと合わせるにはこんなことも必要とのことだ。

土曜日, 10月 07, 2006

ActivePerlでEXEを作成

こちらを参考にActivePerlでwindows用のexeを作ってみた.

参考ページと少し異なったのでメモ

ActivePerlがv5.8.8-819だったので(GUIになった)ppmから,
  • PARとWin32-EXEモジュールを追加インストール
  • pp.exeはC:\perl\site\bin以下に入るのでPATHを追加
これくらいでpp.exeが動き,本当に普通にexeが出来た.素晴らしい.

仕組みとしてperl.dllとスクリプトを一本の圧縮ファイルにしておいて,
(Perlのインストール無くとも)実行できるだけ.

だからさすがに出来たファイルのサイズも大きい(Perlで50行程度の
ものなのに,,1.3Mでした).

D:\>pp -V
Set up gcc environment - 3.2.3 (mingw special 20030504-1)
Perl Packager, version 0.12 (PAR version 0.90)
Copyright 2002, 2003, 2004, 2005 by Autrijus Tang

Neither this program nor the associated "parl" program impose any
licensing restrictions on files generated by their execution, in
accordance with the 8th article of the Artistic License:

"Aggregation of this Package with a commercial distribution is
always permitted provided that the use of this Package is embedded;
that is, when no overt attempt is made to make this Package's
interfaces visible to the end user of the commercial distribution.
Such use shall not be construed as a distribution of this Package."

Therefore, you are absolutely free to place any license on the resulting
executable, as long as the packed 3rd-party libraries are also available
under the Artistic License.

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself. There is NO warranty; not even for
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


D:\>

ちなみに,PARのバグレポートはココ