Web Server 込のDatabaseの性能を測っているわけなんですが、今頃になってわかったのが、
Servlet は一回に一つずつしか処理しない
ええ? ってわけで学生になんとかしておいてねといったのですが、らちがあかず。まぁ、そうだよな。で、いそいそ出動したんですが、
異なるpathなら、serialize されない
ふーん。ということは、session が異なれば multi thread で動くってことか? でも、セッションとか要らないんだけどな。
ぐぐってみると、
Server の中で thread 作るなバーカ
みたいなのがあったり。ところが、
Servlet 3.0 では Asychronous Context
なるものがあり、jetty 8 から使えるらしい。Server から thread pool 取ってきて、
AsyncContext aCtx = request.startAsync(request, response);
で、thread pool で thread 作って、
aCtx.complete();
とすれば良いらしい。なのだが、
何故か激遅
まぁ、そうだよね。そもそも、accept() は multi threaded にやっているはずなので、
一旦、Servlet 毎に serialize しているアホ
が、どこかにいるはず。たぶん、
ServletHandle
だろう。なので、Handler を自分で書くのが良いんじゃないだろうか。 つうか、既になんかあるはずなんだけど。まさか、accept() が single threaded とか?
No comments:
Post a Comment