Advanced Server-side Programming J2EE パフォーマンスチューニング徹底解説

著者
日立ソフトウェアエンジニアリング(株)インターネットビジネス部 紀平篤志河村嘉之かわむらかずゆき北林拓丈阿川典夫 著
定価
3,828円(本体3,480円+税10%)
発売日
2003.4.12
判型
B5変形
頁数
312ページ
ISBN
4-7741-1713-7

概要

本書は今話題のWebシステムのパフォーマンスチューニングについて,単なるJavaプログラミングやツールの解説ではなく,基本的な知識からJavaプログラミングで注意すべきパフォーマンス観点,ボトルネック,システムのチューニング手法など,多岐に渡って解説するものです。先人の知恵が詰まった,現場ですぐに役立つ一冊です。

こんな方にオススメ

  • J2EE開発者
  • Webサーバ管理者

目次

第1章 システムのパフォーマンス

  • 究極のパフォーマンスチューニング
  • Webシステムの現状

第2章 パフォーマンスチューニングの知識

  • パフォーマンスがいいということは?
  • スループットとレスポンスタイム
  • スループットの目標設定
  • サーバ台数の求め方
  • ボトルネックとは?
  • ボトルネックの例
  • パフォーマンスチューニングとは?
  • パフォーマンスチューニングのケーススタディ
  • パフォーマンス研究会の取り組み

第3章 パフォーマンスチューニング

  • Webシステムの処理要素
    • Webブラウザ
    • ユーザ側回線
    • インターネット
    • Webサーバ
    • プラグインからの転送
    • Webコンテナ
    • リモート呼び出し(RMI/IIOP通信)
    • EJBコンテナ
    • JDBC
    • データベースサーバ
  • アプリケーションプログラムの分析
  • 並行処理関連のパフォーマンス分析とチューニング
    • Webサーバだけの構成
    • Webアプリケーションサーバとデータベースサーバを加えた構成
    • 各サーバのチューニング要素

第4章 パフォーマンスチューニングの実践

  • アプリケーションのボトルネックを分析する
  • コードレビューツールによる分析
  • パフォーマンスチューニングのサイクル
  • 負荷測定のサイクル
  • 負荷測定の実施時期
  • 負荷測定ツールの使用
    • ツール概要(オープンソース)
    • ツール概要(パッケージソフト)
  • 負荷測定項目
  • 負荷測定シナリオの決定
  • 性能目標の決定
  • テスト用データの作成
  • 負荷測定テストの実施
    • テスト1
    • テスト2
    • ボトルネックの例
  • ボトルネックの検討
  • ボトルネックの特定
  • ボトルネックに対してのチューニング
    • サーバ設定パラメータのチューニング
    • DBアクセスのチューニング
  • 再テスト測定結果検証

第5章 パフォーマンスチューニングHints&Tips

  • Javaプログラミング〜基本編〜
    • 1.文字列の連結にはStringBufferクラスを使用する
    • 2.入出力処理にはバッファリングを行うクラスを使用する
    • 3.無駄なオブジェクト生成を減らす
    • 4.コレクションクラスと配列
    • 5.Vectorクラスでのオブジェクト取得メソッド
    • 6.配列のコピーにはarraycopyメソッドを使用する
    • 7.メソッドのインライン化を行う
    • 8.過度な同期化(synchronizedブロック)を避ける
    • 9.ロギング処理のコストを減らす
    • 10.ループの終了条件はローカル変数にコピーする
    • 11.判定ロジック部分を例外処理で置換する
  • Javaプログラミング〜サーブレット編〜
    • 12.HttpSessionに必要以上に大きなオブジェクトや大量のオブジェクトをバインドしない
    • 13.スレッドセーフでの同期の範囲
    • 14.サーブレットでの同期の範囲
    • 15.SinbleThreadModelを使用しない
    • 16.データベースへの接続はDB接続プールを利用する
    • 17.DB接続プールから獲得したDB接続は確実にcloseする
    • 18.時間がかかる処理はHttpServletのinitメソッドで行う
  • Javaプログラミング〜EJB編〜
    • 19.大量データ検索型のアプリケーションは,どのようにEJBで実装すべきか
    • 20.多くのデータに変更を加える処理をどのようにEJBで実装するか?
    • 21.多くの属性を持つEntity Beanのうち,かぎられた属性しか使用しない場合の設計/実装テクニックと効果
    • 22.EJBとのアクセスはどの程度の粒度にするべきか?
    • 23.どのようにEntity BeanのPrimarykeyを作成するべきか
    • 24.CMP vs.BMPどういう処理でどちらがどの程度有利か
    • 25.Stateless Session Bean vs.Stateful Session Bean,どういう処理でどちらがどの程度有利か
    • 26.Stateless Session Beanのremote objectを毎度removeすべきかどうか
    • 27.EJBの例外処理について
    • 28.Homeオブジェクトのキャッシュについて
  • プログラムデザイン〜J2EEパターンによる課題の解決〜
    • 29.JNDIを使用したルックアップを効率化する
    • 30.業務ロジックで発生するリモート呼び出しの回数を削除する
    • 31.EJBとのデータ値の受け渡しを効率化する
    • 32.複数のEJBとの値の受け渡しを効率化する
    • 33.検索結果のリストの受け渡しを効率化する
    • 34.粗粒度のEJBを設計するには
  • プログラムデザイン〜フレームワーク〜
    • 35.Sturtsフレームワーク
  • デプロイメント
    • 36.分離レベル
    • 37.EJBキャッシュサイズ

第6章 EJBの適用範囲

  • データソースへのアクセス
  • クライアントとの対話状態の保持
  • プログラムの非同期呼び出し

第7章 付録A パフォーマンスチューニングツール

  • 負荷テストツール
  • プロファイラツール
  • DBチューニングツール
  • コーレビュー支援
  • ネットワーク関連/その他

第8章 付録B J2EEパターン

  • 1.Service Locator
  • 2.Session Facade
  • 3.Value Oject
  • 4.Value Object Assembler
  • 5.Value List Handler
  • 6.Aggregate Entity

プロフィール

河村嘉之かわむらかずゆき

1974年神奈川県生まれ。ウルシステムズに所属。本書では,1章および6章から10章までを担当。東京を中心に,開発者コミュニティにもよく出没する。主な活動コミュニティは,日本Javaユーザグループ,日本Springユーザグループ,x.tokyoプロジェクト,知恵の和など。現在は,いかに開発者コミュニティとビジネスを共栄させるかを模索中。

日常はエンジニアとして働いているが,自分の本業は旅人だと信じている。時間が空くと,次にどこに旅をするか考え始め,落ち着かなくなる。