web-dev-qa-db-ja.com

AWS EC2 Amazon Linuxは、スワップを使用すべきではない場合でも使用しています

さまざまなアプリを実行しているECSサーバーがいくつかあります。いくつかの不思議な停止の後、インスタンスがハードにスワップし、そのIOバーストバランスを消費して、インスタンスを役に立たなくしていることに気づきました。

事実:

  • マシンは、2GBまたは4GBのRAMを搭載したt2およびt3インスタンスです。
  • 実行中のアプリのインスタンスには、十分な数の実際のRAM
  • vm.swappiness1または5に設定されます
  • 私の監視によると、インスタンスのメモリ使用量は常に60%から68%の間です(これは使用量ですwithoutバッファ/キャッシュ、残りの「空き」メモリは常にバッファ/キャッシュによって使用されます)
  • SWAPの使用率は常に最大30〜40%です(1-1,5GBのSWAPが構成されている場合)。 vmstatsisoを報告しています。
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0 434948  83616  73468 818316  580    0   580     0  883 1453  5  1 93  1  0
 2  0 429060  65308  73468 818320 17760    0 17760    76 5927 6318 15 21 52 12  1
 0  3 440660  81180  73464 817208 4352 12880  4352 12880 5791 2672  8 39  0 52  0
 1  1 443164  78080  73452 816304 10104 3272 10104  3272 3850 3807  7 34  0 58  1
 1  1 438456  63944  73460 816356 13168  156 13216   212 3673 3686 12 34 21 32  0
 1  1 449472  72748  73460 815872 1600 11016  1600 11016 3815 1445  1 23  0 74  1
 0  4 453592  59728  73460 815964 3324 8748  4080  8752 4891 2881 10 34  1 54  0
 1  2 462724  68380  73456 815152 1704 10412  1704 10412 5381 2195  7 35  1 55  0
 0  2 473444  81148  73456 815108 1024 10976  1024 10976 4637 1608  2 34  2 63  1
 0  1 483124  87432  73444 818604 2352 9684  6136  9684 4526 1800  8 28  8 54  1
 0  1 480308  66860  73452 824476 13656    0 19536    36 3982 4103 11 27 39 22  0
 0  3 483744  75016  73448 825132 5016 7532  5860  7532 5645 4748 14 33  6 47  0
 2  2 493140  80348  73448 825068 1888 10164  1888 10164 4128 1993  2 34  0 62  0
 1  0 497544  78488  73440 824976 6248 6452  6364  6452 4192 2916  3 39 16 41  1
 0  1 494216  65096  73440 825068 12488    0 12616     0 4070 4620  7 26 42 24  1
 0  2 503856  69436  73452 824760 1968 10152  1968 10192 4885 1821  4 28  2 65  0
 1  0 514264  88532  73440 824188 1332 10668  1332 10672 4749 1622  2 25  1 71  0
 0  1 512984  76628  73440 824120 12844    0 12844     0 3653 3517  6 26 48 20  0
 1  3 479192  65220  73440 824556 12484    0 12832     0 3729 4821  6 29 34 31  0
 0  5 462680  78612  73440 824824 6120 6784  6532  6784 4111 3582  5 45  0 49  1
 0  2 433376  99148  73448 824992 5884 7560  6024  7596 3954 3407  3 33  1 62  0
  • ディスクはスワップファイルと共有される最大20GBのEBSgp2ボリュームであるため、全体的なIO容量は制限されています
  • vm.overcommit_memory0です

2つの同一のcat /proc/meminfoの出力(1つはSWAPあり、もう1つはSWAPなし)は次のとおりです。

スワップを無効にした場合:

MemTotal:        2004488 kB
MemFree:          178976 kB
MemAvailable:     489360 kB
Buffers:          136892 kB
Cached:           290396 kB
SwapCached:            0 kB
Active:          1063520 kB
Inactive:         612900 kB
Active(anon):     817380 kB
Inactive(anon):   436892 kB
Active(file):     246140 kB
Inactive(file):   176008 kB
Unevictable:       17620 kB
Mlocked:           17620 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                20 kB
Writeback:             0 kB
AnonPages:       1262220 kB
Mapped:           140336 kB
Shmem:               252 kB
Slab:              73448 kB
SReclaimable:      39612 kB
SUnreclaim:        33836 kB
KernelStack:        6944 kB
PageTables:        15300 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1002244 kB
Committed_AS:    3076324 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      182248 kB
DirectMap2M:     1875968 kB
DirectMap1G:           0 kB

およびSWAPを有効にした場合:

MemTotal:        2004488 kB
MemFree:          116220 kB
MemAvailable:     925764 kB
Buffers:           73472 kB
Cached:           827312 kB
SwapCached:       136268 kB
Active:           653736 kB
Inactive:        1041616 kB
Active(anon):     375736 kB
Inactive(anon):   424652 kB
Active(file):     278000 kB
Inactive(file):   616964 kB
Unevictable:       17620 kB
Mlocked:           17620 kB
SwapTotal:       1499132 kB
SwapFree:        1061032 kB
Dirty:                 4 kB
Writeback:             0 kB
AnonPages:        749004 kB
Mapped:           180880 kB
Shmem:               252 kB
Slab:             118940 kB
SReclaimable:      92304 kB
SUnreclaim:        26636 kB
KernelStack:        6784 kB
PageTables:        14212 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     2501376 kB
Committed_AS:    2881136 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      110568 kB
DirectMap2M:     1947648 kB
DirectMap1G:           0 kB

私が試したこと:

  • さまざまなvm.swappiness値を試しましたが、何もしないようです
  • swapoff -a && swapon -aの変更後に再起動してvm.swappinessを実行しようとしました

私が期待していること:

  • 私の設定での私の想像では、合計メモリ使用量が使用可能なメモリを超えるという不幸なイベントの場合を除いて、SWAPは常に無料のままである必要があります

なんでこんなことが起こっているの?何が足りないのですか?私は何を変えるべきですか?残念ながら、AFAIKでは、t2/t3 ATMでインスタンスストアを使用する(およびそのボリュームにSWAPを配置する)ことはできません。

現時点では、私のマシンはSWAPをオフにして実行されており、これに満足しています。少し心配しているだけです。 (編集:)私の主な目的は、最後の手段としてSWAPにのみ触れるようにシステムを説得することです。

私の他の単純なEC2Ubuntuマシンは、本来の動作をしています。

1
scream314

私の設定での私の想像では、合計メモリ使用量が使用可能なメモリを超えるという不幸なイベントの場合を除いて、SWAPは常に無料のままである必要があります

メモリ不足の状態は遅すぎます。ページアウトによる再利用は非常に遅く、LinuxVMMはOOMから離れようとします。

代わりに、スペースを交換するために非アクティブなページをゆっくりと細流化すると、スペースとI/Oが利用可能になります。使用しない場合、なぜページングスペースがあるのでしょうか。調整可能なswappinessが高いほど、同じページングスペースの使用が速くなります。

アルゴリズムに関するドキュメントについては、MM wiki、LWNの記事、およびUNIX Stack Exchangeのいくつかのリファレンスを参照してください。 OSファイルキャッシュ用にLinuxカーネルで使用されているページ置換アルゴリズムは何ですか?


ホストでは、割り当てられた合計(Committed_AS)は約3 GBですが、MemTotalは2GBです。 150%は必ずしも悪いわけではなく、その一部は非アクティブまたは未使用です。しかし、保守的な最悪の場合、すべてがRAMに収まらないため、Linuxは可能な限りページアウトします。安全なメモリサイズはCommitted_AS未満になりますが、定量化するのは少し難しいです。

ご使用の環境では、IOPSは永続ストレージのクォータにカウントされるため、非常に高価です。ページングスペースを無効にし、OOMを監視します。

0
John Mahowald