背景
メモリ断片化が原因で、DeepSecurityで使用するためのメモリ割り当て不足が発生しました。
対象サーバのメモリについては特段不足していませんでした。
対応方法
cronにて1日に1回サーバ負荷の低い夜間のタイミングで以下のコマンドを実行し、キャッシュクリアを実行しました。
echo 3 > /proc/sys/vm/drop_caches
メモリ断片化を起こしているサーバをbuddyinfoで確認すると、以下のように値が左に数字が偏っていることがわかります。
$ cat /proc/buddyinfo Node 0, zone DMA 0 0 0 1 2 1 1 0 1 1 3 Node 0, zone DMA32 14482 7224 1763 690 360 188 100 51 11 0 0 Node 0, zone Normal 27719 13308 2669 218 1 0 0 0 0 0 0
この環境のページサイズは4KBでしたので、上記の数値はそれぞれ左から順番に 4KB,8KB,16KB,32KB,64KB,128KB,256KB,512KB,1MB,2M,4MBの空きメモリとなります。
小さい空きメモリ、つまり左側に数字が偏っていればフラグメントが進んでいることを表します。
ページサイズを確認するコマンドは以下になります。
$ getconf PAGE_SIZE 4096