منبع اصلی نوشتار زیر در این لینک قرار دارد

پاک کردن کش رم در سرور

با سلام خدمت دوستان عزیزم

بعضا پیش میاد که با دیدن رم استفاده شده در سرور با دستوراتی مثل free  یا top حجم قابل توجهی از منابع به کش رم اختصاص پیدا کرده

توی سایت های فروشگاهی یا سایت هایی از این دست وقتی یک کاربر میاد و یک کالا رو به سبد خریدش اضافه میکنه خوب به طبع حجمی رو به سهم خودش از منابع سرور (رم) در اختیار پردازش خودش قرار میده و وقتی عملیات خرید رو به اتمام نمیرسونه بنا به هر دلیلی ، pid یا حجم اشغال شده از رم به حالت کش باقی میمونه ، خوب ما میتونیم به طور منظم توی یه ساعت خاص کش رم رو خالی کنیم ، چطوری ؟ :)

با هم ببینیم :

[root@seclinux ~]# free -g
             total       used       free     shared    buffers     cached
Mem:             9          8          0          0          0          3
-/+ buffers/cache:          4          5
Swap:            5          0          5
[root@seclinux ~]#

خوب همونطور که میبینید نزدیک به 4 گیگ از رم سرور درگیر کش هست

یک فایلی به اسم drop_caches توی مسیر /proc/sys/vm هست که میتونه چهار تا مقدار 0 و 1 و 2 و 3 بگیره.

0 حالت پیشفرض یا غیر فعال این مکانیزم هست.

1 برای پاک کردن کش های مربوط به pagecache

2 برای پاک کردن کش های مربوط به dentries و inodes

3 برای پاک کردن کل کش های موجوده

[root@seclinux ~]# sh -c "sync; echo 3 > /proc/sys/vm/drop_caches"
[root@seclinux ~]# free -m
             total       used       free     shared    buffers     cached
Mem:             9          3          5          0          0          0
-/+ buffers/cache:          4          5
Swap:            5          0          5
[root@seclinux ~]#

خوب دیدید که موثر بود . حالا برای اینکه این دستور رو به صورت منظم داشته باشیم :

# crontab -e
0 * * *  * sync; echo 3 > /proc/sys/vm/drop_caches

خوب امید وارم که این آموزش هم به دردتون خورده باشه.

پیروز باشید.

 



برچسب ها :