サイジングとチューニングの必要性

Javaアプリケーションのサイジング、チューニングとはサイジングとは、システムやWebサービスを提供するために想定されるシステムへの利用状況や負荷を見積もることです。一般的には、利用する同時ユーザー数、利用されるデータ量の平均量や最大時の量から見積もり、システムを利用するのに十分な性能を発揮するた

東 浩二(A-pZ)(監修:山田祥寛)

2011年3月4日 20:00

Javaアプリケーションのサイジング、チューニングとは

サイジングとは、システムやWebサービスを提供するために想定されるシステムへの利用状況や負荷を見積もることです。一般的には、利用する同時ユーザー数、利用されるデータ量の平均量や最大時の量から見積もり、システムを利用するのに十分な性能を発揮するために必要なサーバーの構成、アプリケーションの構成、使用CPU数、使用メモリ量などを見積もる作業になります。

チューニングとはシステムのパフォーマンス性能が悪い箇所を改善するために、サーバーの設定の見直しや、アプリケーションのパフォーマンス測定を行い改善する作業のことです。一般的にチューニング作業はアプリケーションのプロトタイプ作成中から構築後にかけて行うものですが、サイジング要件やアプリケーション規模に合わせて事前にチューニング作業を見積もっておく必要があります。

本連載ではJavaアプリケーションのサイジングとチューニングの重要性について、具体的な障害例を通して紹介していきます。

Javaアプリケーションと言えば

エンタープライズJavaアプリケーションと言えば、Webアプリケーション用のフレームワークを用いて作成されることが多いと思われます。代表的なところではStruts、Seasor2、Spring framework、Click、Wicketなどがあります。フレームワークを用いる一番の目的として、フレームワークで提供される制御層の設計と実装が行われているため、実装を開始するまでに必要な作業が大幅に短縮される点が挙げられます。制御層の作業が軽減されることにより、アプリケーションの画面と業務ロジックの設計~実装~テストに注力することができます。

受けられるメリットは他にもあります。

  • 外部ライブラリを柔軟に追加できるよう設計されている
  • 書籍やインターネットにも情報が数多くあるため、実装するまでに必要な教育コストを減らすことができる
  • 実装のコード量を減らす仕様が導入されているものも多く、可読性や保守性を向上させている

図1:フレームワーク利用のメリット(クリックで拡大)

これらを総合すると、アプリケーション構築にかかる期間を短くすることが期待できますし、つまりコストを削減するために採用されるケースもあるでしょう。

このように、受けられるメリットが多く紹介されているフレームワークですが、短期間でアプリケーションを作成できるために本来検討するべき課題点であるサイジングが軽視されてしまうことがあります。

以下に、サイジングでの留意点と、チューニングでの留意点を一部取り上げます。

項目概要
レプリケーションの必要性同時利用者が多い。利用者増加の予測が立たない。
データI/O量の推測月次処理などで、特定の処理にて一括で大量のデータが入出力されるため、一時的にI/OやCPU負荷、メモリ使用量が急上昇する。
コンテンツ量アプリケーションで扱う動的コンテンツの数=クラスの数になる。アプリケーション公開時に自動コンパイルするか否かの判断になり、メモリ使用量とのアンマッチを起こしやすい。
モジュール依存のメモリ使用フレームワークやライブラリが使う一時的なメモリも事前に測定する。フォーマット変換やエンコード、テンプレート機能を持つモジュールはデフォルト設定の場合、メモリを一時的に大量消費するものが存在する。
ユーザーからのアップロードアップロードするファイルサイズが大きい場合や数が多い場合、それだけI/Oが多く発生するためシステムへの負荷が高い。
他システム連携他システムとの連携をする場合、連携先システムの処理時間がそのままアプリケーションに影響する。
セッションオブジェクト利用実装を軽減するために利用されるセッション量とユーザー数、セッションの有効時間の概算を行ってセッションの設計とメモリの設定をする。疑似的なメモリリークとなり問題を見つけにくくなる。
一時データサイズアプリケーション内でのみ生成されるオブジェクトのサイズが大きくなるとメモリを切迫し、メモリ不足を引き起こす。一括で大量データを扱う際に発生させやすい。
表1:アプリケーションサイジング・チューニングでの留意点

これらはアプリケーション規模が小さい時にでも検討する必要があります。なぜならこの課題点を考慮して事前に設計しなければ、アプリケーションが結合テスト中や本番データ投入後に動きが悪くなるケースがいくつもあるためです。

ではサイジングを行わなかった場合は、どのような障害が発生するのでしょうか。

よくある例としては、単体テスト時には気づかなかったオブジェクトの開放ミスや、セッションへの乱雑なオブジェクトの詰め込みなどにより、テスト時には発生せずに本番環境が稼働してから発生する不定期なメモリリークがあります。最悪な場合、アプリケーションがメモリ不足で止まってしまう事例も珍しくありません。

また、システムはWebアプリケーションだけではありません。当然データベースやバックオフィス処理も組み合わせて使われます。これらもサーバーのリソースを利用しますので、Webアプリケーションの都合だけでメモリやCPUを占有してしまうことは避けなければならないでしょう。無尽蔵にリソースを使うことができるシステム構成はまれですし、不必要なリソースの消費はシステム全体の遅延を招く引き金になり、さらには思わぬ障害や不具合を引き起こす原因になります。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30