แก้ไขคอนฟิก Squid Cache Size

ปกติการติดตั้ง squid โดยใช้คำสั่ง rpm สามารถที่จะใช้งานได้เลย แต่เพื่อเพิ่มประสิทธิภาพการใช้งานของ squid เช่น เพิ่มขนาดของไฟล์ cache เพื่อให้สามารถเก็บไฟล์ได้มากขึ้น ซึ่งมีผลให้โอกาสที่มีการโหลดไฟล์เดียวกันซ้ำ (cache hit) มีสูงมากขึ้น ทำให้ประหยัด bandwidth ที่ต้องใช้ในการโหลดไฟล์จากอินเตอร์เน็ต

บทความนี้กล่าวถึงการแก้ไขคอนฟิกของ squid ในส่วนเพื่อเพิ่มขนาดของ cache โดยจะทดสอบบน Fedora 11  คอนฟิกไฟล์ของ squid จะอยู่ที่ /etc/squid/squid.conf

ขนาดไฟล์ใหญ่สุดที่จะเก็บ cache ไว้ใน memory

เนื่องจากการเขียนอ่านไฟล์ลงบน memory มีความเร็วมากกว่าบน disk มาก ถ้าเรามีขนาดของ memory มาก แนะนำให้เพื่มขนาดไฟล์ใหญ่สุดที่จะเก็บ cache ไว้ใน memory เพื่อว่าถ้าการโหลดไฟล์ที่ HIT จะได้ดึงจาก memory ได้เลย

โดยดีฟอลต์ ค่าคอนฟิกจะตั้งไว้แค่ 8 KB (กิโลไบต์) เท่านั้น หากต้องการเพิ่มค่า เช่นเพิ่มเป็น 8 MB สามารถแก้ไขคอนฟิกได้ตามตัวอย่าง

#  TAG: maximum_object_size_in_memory   (bytes)
#       Objects greater than this size will not be attempted to kept in
#       the memory cache. This should be set high enough to keep objects
#       accessed frequently in memory to improve performance whilst low
#       enough to keep larger objects from hoarding cache_mem.
#
#Default:
# maximum_object_size_in_memory 8 KB
maximum_object_size_in_memory 8 MB

ขนาดไฟล์ใหญ่สุดที่จะเก็บ cache ไว้บน disk

ประโยชน์ของการใช้ squid คือเก็บไฟล์ที่มีการโหลดมาแล้ว ลงบน disk เพื่อให้ครั้งต่อไปถ้ามีผู้โหลดไฟล์นี้ซ้ำ จะได้ดึงจาก disk ได้เลย ไม่จำเป็นต้องไปดาวน์โหลดจากอินเตอร์เน็ตอีกครั้ง

แต่ squid มีคอนฟิกที่ระบุขนาดของแต่ละไฟล์ใหญ่ที่สุด ที่จะเก็บ cache ลงบน disk โดยค่าดีฟอลต์ตั้งไว้แค่ 4096 KB หรือ 4 MB เท่านั้น หมายความว่า ถ้ามีการโหลดไฟล์ขนาดใหญ่กว่านี้  squid จะไม่ทำการเก็บไฟล์ ทำให้ผู้ใช้ที่โหลดไฟล์เดียวกัน ต้องไปดาวน์โหลดใหม่จากอินเตอร์เน็ตทุกครั้ง

ถ้าคุณมีขนาดของ disk ค่อนข้างใหญ่ แนะนำให้เพิ่มค่าคอนฟิกนี้ เช่น ถ้าต้องการเก็บไฟล์ที่มีขนาดใหญ่ถึง 16 MB สามารถแก้ไขคอนฟิกได้ดังนี้

#  TAG: maximum_object_size     (bytes)
#       Objects larger than this size will NOT be saved on disk.  The
#       value is specified in kilobytes, and the default is 4MB.  If
#       you wish to get a high BYTES hit ratio, you should probably
#       increase this (one 32 MB object hit counts for 3200 10KB
#       hits).  If you wish to increase speed more than your want to
#       save bandwidth you should leave this low.
#
#       NOTE: if using the LFUDA replacement policy you should increase
#       this value to maximize the byte hit rate improvement of LFUDA!
#       See replacement_policy below for a discussion of this policy.
#
#Default:
# maximum_object_size 4096 KB
maximum_object_size 16 MB

ขนาดไฟล์ cache รวมทั้งหมดที่เก็บไว้บน disk

เมื่อมีการใช้งานไปเรื่อยๆ ขนาดของ cache ที่เก็บไว้บน disk ก็มีขนาดเพิ่มขึ้นเรื่อยๆ ไปถึงจุดหนึ่ง เป็นค่าผลรวมขนาดไฟล์ทั้งหมดสูงสุดที่ squid จะอนุญาตให้มีการเก็บไฟล์ไว้ ถ้าไฟล์ใหม่เพิ่มมาอีก ที่เกินจากกนี้ จำเป็นต้องลบบางไฟล์ใน cache ออกไป เพื่อเก็บไฟล์ใหม่นี้ได้

โดยดีฟอลต์ squid อนุญาตให้เก็บไฟล์ cache ได้รวมทั้งหมด ไม่เกิน 100 MB เท่านั้น ถ้ามีขนาด disk ขนาดใหญ่ แนะนำให้เพิ่มค่าคอนฟิกนี้ เช่น เพิ่มให้สามารถเก็บไฟล์ cache ได้ทั้งหมด 200 GB สามารถแก้ไขคอนฟิกได้ดังนี้

#  TAG: cache_dir
#       Usage:
#
#       cache_dir ufs Directory-Name Mbytes L1 L2 [options]
#
#Default:
# cache_dir ufs /var/spool/squid 100 16 256
cache_dir ufs /var/spool/squid 200000 16 256

หมายเหตุ ขนาดตัวเลขที่ระบุ มีหน่วยเป็น MBytes

รีโหลดเซอร์วิส squid หลังแก้ไขคอนฟิก

หลังแก้ไขไฟล์ /etc/squid/squid.conf ทุกครั้ง ต้องรันคำสั่ง service เพื่อรีโหลดคอนฟิกใหม่ให้มีผล

[root@fc11-64min ~]# service squid reload

ข้อมูลอ้างอิง

3 thoughts on “แก้ไขคอนฟิก Squid Cache Size”

  1. เซ้ต squid cache size ไว้ที่ 4GB squid ก็ไม่ยอมทำงาน ต้องแก้อย่างไรคับ

  2. squid 32bit ตั้งค่า cache_mem ได้สูงสุดไม่เกิน 2GB ถ้าต้องการใช้ mem มากกว่านั้นต้องเปลี่ยนเป็น squid 64bit

  3. ต้อง build cache folder ใหม่ครับ
    โดย stop squid ก่อนแล้วใช้คำสั่ง
    squid -z
    เสร็จแล้ว start squid

Leave a Reply

Your email address will not be published.