背景

メモリ断片化が原因で、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