Javaエンジニアがうんざりする「リソース不足」問題と対処法:Javaのよくあるランタイムエラーの5大原因【第2回】
「Java」アプリケーションで発生するランタイムエラーが発生する原因は、開発者のミスだけではない。主な原因のうち「リソース不足」を取り上げ、その対策を紹介する。
プログラミング言語および実行・開発環境「Java」で開発したアプリケーションは、実行中に不適切な動作をする「ランタイムエラー」(実行時エラー)が発生することがある。ランタイムエラーの原因のうち、主要な5つを紹介する本連載。第2回となる今回は、2つ目の原因を取り上げる。
2.リソース不足
併せて読みたいお薦め記事
連載:Javaのよくあるランタイムエラーの5大原因
エラーへの対処法
- 脆弱性「Log4Shell」にこれで対処 攻撃を防ぐために知っておきたい措置
- 重大なバグの発生時、IT部門が腕前を発揮するためのノウハウとは?
- 「ポートは使用中です」「ポートは既に開かれています」のエラーが出る原因は?
全てのランタイムエラーがソフトウェア開発者のせいというわけではない。むしろランタイムエラーの原因になりがちなのは、ITインフラが引き起こすリソースの問題だ。例えば以下のような問題が挙げられる。
- サーバからの応答の遅延
- メモリの容量不足
- CPUの過剰使用
- プロセッサが実行するスレッドの未スケジューリング
リソース関連のランタイムエラーを回避する方法は、「Apache JMeter」「LoadRunner」などの負荷テストツールを使用することだ。問題を検出したら、リソースの問題が解消するまでアプリケーションの開発を停止する。
実行中に処理すべきデータ量やコマンド数などが変動し、負荷が大きく変わるアプリケーションもある。例えば金融サービスを扱うアプリケーションは、普段は負荷が安定していても、取引日の終わりに近づくころには負荷が極端に高くなっている恐れがある。税務サービスは申告期限前に負荷がピークに達する可能性があるが、それ以外の期間はほとんど負荷が掛からない。
開発者は、リソースの使用状況を継続的に監視することで、リソース関連のランタイムエラーを先回りして検出し、軽減しなければならない。その支援ツールとしては、「Java Flight Recorder」「JDK Mission Control」などがある。
負荷の予測が難しいアプリケーションは、クラウドインフラを使うロードバランサー(負荷分散装置)でリソースを割り当てるとよい。リソース不足になることも、めったに使わないハードウェアを購入する事態に陥る可能性を低減できる。
TechTarget発 エンジニア虎の巻
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.