LoginSignup
3
3

More than 3 years have passed since last update.

Jenkinsのジョブが長すぎてメモリリークした時の対処法

Last updated at Posted at 2019-07-01

経緯

1時間半程かかるrspecのテストをJenkinsで実行したところ、途中でJenkinsが落ちてしまった。
再度テスト実行して落ちる寸前でfreeコマンドを確認したところメモリのusedが595(約0.5Gb)になっていたため、メモリが枯渇したのだと思いメモリ開放について調べてみた。

Tl; DR

slabキャッシュの開放

echo 2 > /proc/sys/vm/drop_caches

実行前

$ free -tm
             total       used       free     shared    buffers     cached
Mem:          7884       7289        595         37        474       1699
-/+ buffers/cache:       5115       2768
Swap:            0          0          0

実行後

$ free -tm
             total       used       free     shared    buffers     cached
Mem:          7884       4686       3198         37        475        289
-/+ buffers/cache:       3922       3962
Swap:            0          0          0

freeが595(約0.5Gb)->3198(約3Gb)になりました!
さらに定期実行できるようにcronに設定。

sudo su # rootで実行
crontab -e
# 毎時0分にキャッシュクリア
0  * * * * echo 2 > /proc/sys/vm/drop_caches

Jenkinsのメモリリークについて考察

jenkinsのジョブを実行し続けるとメモリの空きが減ってくる。
おそらくslabキャッシュというkernelがdentry等をキャッシュするために使うメモリ領域が多くなっているため。
slabキャッシュは以下コマンドで開放する。

echo 2 > /proc/sys/vm/drop_caches

参考

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3