[FrontPage] | 更新履歴 - サイトマップ - "DirectoryStorageBenchmark" 配下のコンテンツ - 過去を発掘 | [Snap.Shot] |
DirectoryStorageBenchmark |
さっそくですが、xfsに乗せてみました。
条件は、もちろんZODBとの比較。毎度おなじみのApacheBenchから。
ここの読者ならそんなん分かってるとは思うけど、特定のページがキャッシュされた状態で ガシガシ呼ばれるのって、そう多いケースじゃない。 あくまで条件の一パターンについて、標準のZODB(FileStorage)とヨコの比較をしようとしているのだということを お忘れなく。
ベースマシンはAthlon 1GB, mem 512MB, hdd UATA100 (80GB + 20GB), Linux-2.4.18_SGI_1.1
FileStorage(標準のストレージ)は80GB側のext3に、DirectoryStorageは20GB側のxfsに
DirectoryStorageのフォーマットは「lawn」。(だってどんなんなるか見てみたかったんだもん) ファイル数すくないので、そう不利にはならないはず。
ベンチかける前にあらかじめ叩いておく。つまりキャッシュさせた状態で本試験。
付帯条件で足りないとこあるかな。
いくぜゴー!:
$ ab -c 20 -n 500 http://localhost:8080/Examples/ShoppingCart Server Software: Zope/(Zope Server Hostname: localhost Server Port: 8080 Document Path: /Examples/ShoppingCart Document Length: 3159 bytes Concurrency Level: 20 Time taken for tests: 12.604 seconds Complete requests: 500 Failed requests: 20 (Connect: 0, Length: 20, Exceptions: 0) Broken pipe errors: 0 Non-2xx responses: 21 Total transferred: 1767897 bytes HTML transferred: 1622937 bytes Requests per second: 39.67 [#/sec] (mean) Time per request: 504.16 [ms] (mean) Time per request: 25.21 [ms] (mean, across all concurrent requests) Transfer rate: 140.26 [Kbytes/sec] received Connnection Times (ms) min mean[+/-sd] median max Connect: 0 6 32.8 0 204 Processing: 206 489 112.4 493 1390 Waiting: 20 488 113.7 493 1390 Total: 206 495 103.1 495 1390 Percentage of the requests served within a certain time (ms) 50% 495 66% 523 75% 549 80% 569 90% 613 95% 652 98% 706 99% 728 100% 1390 (last request)
いくぜゴー!:
$ ab -c 20 -n 500 http://localhost:8080/Examples/ShoppingCart Server Software: Zope/(Zope Server Hostname: localhost Server Port: 8080 Document Path: /Examples/ShoppingCart Document Length: 4779 bytes Concurrency Level: 20 Time taken for tests: 13.349 seconds Complete requests: 500 Failed requests: 0 Broken pipe errors: 0 Non-2xx responses: 501 Total transferred: 2634759 bytes HTML transferred: 2394279 bytes Requests per second: 37.46 [#/sec] (mean) Time per request: 533.96 [ms] (mean) Time per request: 26.70 [ms] (mean, across all concurrent requests) Transfer rate: 197.38 [Kbytes/sec] received Connnection Times (ms) min mean[+/-sd] median max Connect: 0 1 2.5 0 17 Processing: 102 524 74.3 531 733 Waiting: 84 524 74.4 531 732 Total: 102 524 73.4 531 750 Percentage of the requests served within a certain time (ms) 50% 531 66% 552 75% 566 80% 575 90% 604 95% 631 98% 658 99% 672 100% 750 (last request)
あまりにも差が無いので、どっちがどっちだか間違えそうになったよ…。 それくらい結果に差が無かった。
あと、からっぽのStorageは、初回起動時にZopeがたりないもん補ってくれるみたいなんだけど、 どっか補い方違うのかしら…。同じショッピングカートなのにContent-Length違うんですけど。
つまり、そんなにアイテム数が無い状態においては 速度低下が見られない というのが ここでは重要。構造上、アイテム数ふえたときZODBでは遅くなるのは分かっているんだけど、 DirectoryStorageではどうなるのか、ちょっと興味。
問題はですな、既存のStorageから別のStorageへのコピーが出来ないということなんですよ。 それさえできれば、とっとと移行しちゃうんだが…。
むかーしの、らんさんのPostgreStorageについてた移行ツール参考にすればhackできるかな。 いや、それよりStandaloneZODBとして叩いてみるのが先かな。