เช็ค Cached แล้วหรือยัง ? ปัญหายอดฮิตที่ทำให้ Linux ช้าลง

Sethavoot Rerksuriyapant/ January 25, 2019/ FAQ/ 0 comments

ทำไมจู่ ๆ Server ทำงานช้าลง ?  ความคิดเหล่านี้เกิดขึ้นทันทีเมื่อ Server เกิดอาการหน่วง ๆ หรือทำงานผิดปกติ ใครจะไปรู้ว่าสาเหตุสำคัญอีกหนึ่งสาเหตุ ที่มักพบกันบ่อย ๆ เมื่อเกิดปัญหา Server ช้า นั่นก็คือ “Cached” บนระบบ Linux ดังนั้น ขออนุญาตหยิบยกประเด็นนี้มาพูดถึง และอธิบายถึงสาเหตุ รวมไปถึงวิธีการแก้ปัญหากัน

อย่างที่ทุกท่านทราบว่า Linux Server นั้น มีการใช้งาน Performance ที่ต่ำมากกว่า OS อื่น ซึ่งในส่วนนี้ท่านอาจใช้แค่ RAM : 1 GB ก็สามารถใช้งานได้ตามปกติแล้ว (Command Mode) แต่บางทีอาจพบว่า Server มีอาการช้า ๆ หรือ เกิดหน่วงขึ้นเมื่อมีการเรียกใช้ Command แต่เมื่อทำการ Restart เครื่อง อาการเหล่านี้ดันหายไป… หากพบว่าอาการที่เจอ มีลักษณะเป็นแบบนี้ นั่นบ่งบอกได้ว่า RAM มีการถูกใช้งานเยอะ แล้วเกิดการเก็บ Cached เอาไว้ 


“What is Cached ?” 

คือ ความจำประเภทนึงใน OS ที่เก็บการทำงานที่มีการใช้งานบ่อย ๆ เอาไว้ เพื่อเวลามีการใช้งานในรูปแบบเดิมจะสามารถทำงานได้เร็วยิ่งขึ้น

อ้าว !? แล้วทำไม Cached ถึงทำให้ช้าละ มันควรทำให้เร็วขึ้นสิ

นั่นก็เพราะว่า การที่เครื่องทำงานได้อย่าง Smooth นั้น ปกติมันก็ต้องใช้ RAM ในการทำงานครับ แต่ RAM ที่มีดันถูกใช้เก็บ Cached ไปหมดแล้ว จนทำให้เครื่องไม่มี RAM เหลือเพียงพอต่อการใช้งานนั่นเอง


ประเภทของ Cache

Clean Cache & Dirty Cache

  • Clean Cache คือ  ความจำที่มีการถูกเรียกใช้งานบ่อยหรือเราใช้เป็นประจำ ทำให้เครื่องทำงานได้เร็วยิ่งขึ้น
  • Dirty Cache คือ ความจำที่เคยถูกเรียกใช้งานหรือไม่ได้มีการใช้งานสม่ำเสมอ และไม่ได้ใช้งานอีกแล้ว

อาการที่บ่งบอกว่า RAM ไม่เพียงพอต่อการใช้งาน

  1. เมื่อ SSH เข้าเครื่อง แล้วเกิดอาการค้างหรือเข้าไม่ได้ชั่วขณะ
  2. เครื่องมีอาการทำงานช้าหรืออาการหน่วง ๆ
  3. ใช้ Command พื้นฐานไม่ได้ เช่น Top แล้วค้าง
  4. ถ้ามีการใช้งานในรูปแบบ Web ตัว Website จะใช้งานได้ช้ากว่าปกติ

วิธีตรวจสอบการใช้งาน RAM

พิมพ์คำสั่งใน Command Line

free -h

  • กรอบสีแดง – > แสดงค่าการใช้งานของ RAM หรือ Memory
  • กรอบสีฟ้า – > แสดงค่าการใช้งานของ Disk ที่มาทำงานแทน RAM

อธิบายค่าของแต่ละ Column

  • total : แสดงค่าที่มีทั้งหมด (total= used+free+buff/cache)
  • used : แสดงค่าที่ถูกใช้งานทั้งหมด
  • free : แสดงค่าที่ไม่ถูกใช้งาน หรือยังไม่ถูกใช้
  • shared : แสดงค่าที่ถูกใช้งานแทน disk
  • buff/cache : แสดงค่าที่ถูกใช้งานโดย buffer และ cache
  • available : ค่าเริ่มต้นที่ถูกคาดการณ์ เมื่อapplicationนั้นไม่เคยถูกใช้งานมาก่อน

หากต้องการแปลงหน่วย หรือ รายละเอียดเพิ่มเติม สามารถใช้ Command ด้านล่างเพื่อเข้าใจได้ง่ายขึ้น

free –help

วิธีแก้ไขปัญหา มี 2 วิธีหลักๆ

1.หากต้องการ Clear ทุก Service แนะนำให้ Restart เครื่อง

2.หากไม่สามารถ Restart เครื่องได้ สามารถทำได้ตามขั้นตอนด้านล่าง ดังนี้

  • ต้องกำหนดตัวเข้า root ก่อน โดยใช้คำสั่ง

sudo -s หรือ sudo su

  • จากนั้นใช้คำสั่ง Clear Cache จะมี 3 รูปแบบ เลือกใช้อันใดอันนึง ดังนี้

สำหรับ Pagecache: (Recommends)

sync; echo 1 > /proc/sys/vm/drop_caches

สำหรับ dentries and inodes:

sync; echo 2 > /proc/sys/vm/drop_caches

สำหรับ pagecache, dentries, and inodes: (not recommends)***

sync; echo 3 > /proc/sys/vm/drop_caches

***เหมาะสำหรับคนที่เข้าใจโครงสร้างของ pagecache, dentries, and inodes นี้เป็นอย่างดี


อธิบายเกี่ยวกับ Command ที่ใช้ 

  • sync : มีหน้าที่เปลี่ยน Clan Cache ให้กลายเป็น Dirty Cache
  • command ” ; ” : มีหน้าที่แยก Command แต่จะทำ Run Command แรกให้เสร็จก่อนถึงจะทำ Command ต่อไป
  • echo  <num> :  มีหน้าที่แสดงผลตามหมายเลข
  • drop_caches : มีหน้าที่ทิ้ง Clean Cache ให้ RAM ได้มีพื้นที่มากขึ้น

เมื่อใช้คำสั่งเสร็จแล้ว ลองใช้ Command ตรวจสอบก่อน เพื่อเช็คความเรียบร้อยหลังทำการลบไปแล้ว ยังมีอาการช้าลงหรือไม่ ถ้ายังพบว่ามีอาการช้าลงอยู่ ให้ลองเช็คว่า Service ไหนที่มีการเรียกใช้ RAM เยอะที่สุด โดยใช้คำสั่งตาม Command ตามข้างล่างนี้ได้เลย

top

หลังใช้คำสั่ง “top” Command กด ”shift+m” เราก็จะเห็น Service ที่มีการเรียกใช้ RAM มากสุด หรือ น้อยที่สุด นั่นเอง

หากพบว่าทำหมดทุกขั้นตอนนี้แล้ว แต่ Server ยังช้าอยู่ ขอแนะนำให้พิจารณาเพิ่ม RAM เพราะการใช้วิธีนี้จะตอบโจทย์ปัญหาที่ท่านเจอมากที่สุดและง่ายที่สุดด้วย หรืออาจเลือกใช้ Disk มาทำเป็น RAM ได้เช่นกัน

Src: https://stackoverflow.com/questions/29870068/what-are-pagecache-dentries-inodes, https://www.tecmint.com/clear-ram-memory-cache-buffer-and-swap-space-on-linux/
ภาพประกอบ  3  cached
ภาพประกอบ  2  cached

ติดตามข่าวสารใหม่ๆ หรือข้อมูลน่ารู้อีกมากมายได้ที่

  OpenLandscape Fanpage | https://www.facebook.com/openlandscapecloud/

  OpenLandscape Twitter | https://www.twitter.com/olscloud/

 OpenLandscape Cloud | https://openlandscape.cloud/

ภาพประกอบ  4  cached

Simple is the best but everything can change for a reason.

Leave a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*