web-dev-qa-db-ja.com

EC2、Tomcat、Amazon Linux、およびメモリ不足

AWS Elastic Beanstalkを使用して、Tomcat 8.5Java 8でアプリケーションを実行します)64ビットで実行Amazon Linux。私はt3.smallを使用します。これは、仕様によれば、2vCPIと2.0GBのメモリを備えています。私の構成は次のようになります。

enter image description here

しばらくすると(2日)、アプリケーションのメモリが不足します。システムログは次のことを示しています。

[ 4627.110117] [ pid ]   uid  tgid total_vm      rss nr_ptes nr_pmds swapents oom_score_adj name

[ 4627.204880] [ 8096]     0  8096   191163    10071     105       4        0             0 aws

[ 4627.209125] [ 8466]    91  8466  1132802   432642     998       8        0             0 Java

[ 4627.217630] [ 8540]    48  8540   328251      999      98       4        0             0 httpd

[ 4627.221861] [ 8541]    48  8541   328285     1158      98       4        0             0 httpd

[ 4627.226172] [ 8542]    48  8542   328280     1265      98       4        0             0 httpd

[ 4627.234663] [ 8655]     0  8655   134228     5330      81       3        0             0 cfn-hup

[ 4627.273722] [ 8738]    48  8738   328280     1297      98       4        0             0 httpd
.......

[ 4627.299082] Out of memory: Kill process 8466 (Java) score 865 or sacrifice child
[ 4627.303727] Killed process 8466 (Java) total-vm:4531208kB, anon-rss:1730568kB, file-rss:0kB, shmem-rss:0kB

Cloud Watchログに表示されるもの: enter image description here

T3.smallではメモリの問題なしにサーバーを実行するには不十分であるか、Javaアプリでメモリリークが発生していますか?構成を変更して修正できますか?

1
Marek R

2GBのマシンで1.5GBを必要とするアプリを実行したい-システム、ディスクキャッシュ、その他のプロセスなどにあまり残されていないので、かなりのストレッチです。たとえそれがあったとしても、素晴らしいパフォーマンスは期待できません。クラッシュしませんでした。

t3.mediumで実行し、それでもクラッシュするかどうかを確認します。もしそうなら、あなたはメモリリークを持っているかもしれません。そうでない場合は、アプリがt3.smallが提供できる以上のRAM)を必要としていることを意味します。

それでもt3.smallを使用することを主張する場合は、適切なメモリサイズが提供されていなくても、スワップスペース(2GBなど)を追加してみてください。これにより、アプリが割り当てることができるメモリの量が増えますが、ディスク上にあるため、一部は非常に遅くなります。アプリが割り当てられたメモリをどのように使用するかによって、問題になる場合と問題にならない場合があります。

また、T2/T3インスタンスが使用するCPUクレジットにも注意してください。高速処理の期間が経過すると、速度が低下する場合があります。ここで説明します:t2とt3の作業条件を明確にすることについて?

結論は次のとおりです。適切なサイズのインスタンスを使用します。特に本番環境では、CPUパワーのメモリが不足することは望ましくありません。

お役に立てば幸いです:)

2
MLu