[Armadillo:07649] Re: WEBサーバー(winstone)におけるファイルダウンロード速度について

Yasushi SHOJI email@hidden
2011年 10月 21日 (金) 19:18:50 JST


At Tue, 04 Oct 2011 21:03:04 +0900,
HSC T.Tomita wrote:
> 
> 以下に示す環境において、
> winstone 起動(HTTPポート:80)後、WindowsPCからブラウザ接続を行い、
> webapps ディレクトリ内に格納されているファイル(サイズ:900k程度)を
> ダウンロードしようとするが、通信速度が「2.44kbps」程度しか出せず、
> パケットモニター上では、3秒に1度の間隔で取得している状況です。
> HTTPポート番号には依存せず、Default:8080でも同様。
> しかし、FTPによるファイルアップデート・ダウンロードは違和感がない速度を
> 叩き出していることもあり、物理レベルでの問題は考えにくいのですが、
> 何かこのようなご経験は御座いますでしょうか?
> 
> 【ターゲット環境・状況】
>  ・Armadillo-440(atmark-dist-20110704/linux-2.6.26-at15)
>  ・JDK:j2sdk-1_4_2_18
>  ・VM:JavaME(phoneme_advanced-mr2-dev-src-b34-04_oct_2007.zip)
>  ・Webサーバー:winstone-0.9.10
>   ※必要なjarファイルは、「apache-tomcat-4.1.40」より取得
>  ・起動コマンド
>   →# /usr/java/bin/cvm -Xbootclasspath/a=./winstone-0.9.10.jar:
>      /usr/java/lib/rt_org.jar:/usr/java/lib/tools.jar
>      -jar ./winstone-0.9.10.jar --httpPort=80 --webroot=./webapps/

ちょっと気になったので、winstone のコードを見てみました。

> 【winstoneログ】
> 	[Winstone 1970/01/01 11:34:04] - URI Line: GET /xxxxx.jar HTTP/1.1
> 
> 	〜〜省略〜〜
> 	[Winstone 1970/01/01 11:34:07] - Written 8192 bytes to response body

これを出しているのは、WinstoneOutputStream::commit()なのですが、このcommit は

内部に、ByteArrayOutputStream 型の buffer を持っています。commit()は毎
回呼ばれるたびに、byte[]型の content に変換(memory allocate[1])され、
OutputStream 型の outStream に渡されます。

これ、早いんでしょうかね?

[1] http://www.google.com/codesearch#5nd3vJ4zpWY/src/share/classes/java/io/ByteArrayOutputStream.java&q=ByteArrayOutputStream&l=178
-- 
             yashi




armadillo メーリングリストの案内