今日仕事で困ったことになりまして、SpringFrameworkでHessianを利用しているのですが、大量のデータレスポンスで詰まってしまいました。
どういうことかというと、クライアント側からHessianのProxyBeanでオブジェクトを送信してSQLの結果を受け取るものなのでして、起動当初はスムーズにデータが流れていて問題ないと思ったのですが、暫くするとクライアント側での待ち状態がだんだんと溜まっていてしまいにはリクエストすら遅れない状態になってしまいました。
ちょこっと調べてみたのですが特にそれらしいことは調べられなかったので、Hessian以外で利用できるBeanはないかと思いそちらのほうを調べてみたら、HTTPそのままでデータの送受信を行うHttpInvokerというものがあるみたいです。
HessianやBurlapもHTTPベースでデータ送受信を行っているのですが、データの形式がHessianだとバイナリ、BurlapだとXMLとなっているので、そのあたりの解析コストがかかっているのかなとちと思います。
HttpInvokerはJava標準のObjectInputStream、ObjectOutputStreamを利用してオブジェクトのSerializeデータをやり取りしているみたいなので、こちらのほうが標準的なものを利用しているということで多少はコスト軽減になるのかと勝手な推測をしています。
とりあえず明日テストです。
とはいってもHessianやBurlapを作っている人って確か超天才の方なんですよね。一人で全部作っているみたいですし。そういう人がコストパフォーマンスの悪いものを作っているとは思えないし、その人の作っているものは評判がいいので、単純に自分たちが作っているアプリケーション側の問題と思えます。
とはいっても利用しているデータベースがOracleというところもかなり引っかかるのですが...
