ทดสอบค่าคอนฟิก Squid Cache Size

บทความนี้แสดงตัวอย่างการทดสอบโดยใช้โปรแกรม wget โหลดไฟล์ผ่าน squid เพื่อดูผลของการตั้งค่า cache size ต่างๆ ว่ามีผลต่อการโหลดไฟล์ การ HIT cache อย่างไร

ในแต่ละการทดสอบ มีการแสดงไฟล์ log ของ squid ด้วย คือไฟล์

  • access_log (/var/log/squid/access_log) เก็บข้อมูลการใช้งาน proxy ว่ามาจากเครื่อง “client” ไหน เข้าเว็บไซต์ไหน รวมทั้งบอกผลการ HIT cache หรือไฟล์ที่โหลดนั้น มีอยู่ใน cache หรือยัง
  • store_log (/var/log/squid/store.log) เก็บรายละเอียดการสร้าง “SWAPOUT” หรือลบ “RELEASE” ไฟล์ cache

เครื่องที่ใช้ทดสอบ

  • web client: 192.168.1.2
  • web server: 192.168.1.1
  • proxy: 192.168.1.254

คอนฟิกของ squid ในส่วน cache size

maximum_object_size_in_memory 8 KB
maximum_object_size 4096 KB
cache_dir ufs /var/spool/squid 100 16 256

คอนฟิก proxy ของโปรแกรม wget

เพื่อให้โปรแกรม wget โหลดไฟล์ผ่าน proxy ต้องสร้างไฟล์ .wgetrc ใน home directory ของผู้ใช้ที่รันคำสั่ง wget แล้วใส่คอนฟิกดังนี้

[root@fc11-64min ~]# cat .wgetrc
http_proxy = http://192.168.1.254:3128/

คำอธิบาย

  • 192.168.1.254 คือ ip ของ proxy
  • 3128 คือพอร์ตของ proxy

ทดลองโหลดไฟล์ขนาด 7k

เริ่มต้นทดลองโหดลไฟล์ขนาด 7k (กิโลไบต์) ซึ่งน้อยกว่าค่า “maximum_object_size_in_memory” ที่ตั้งไว้ 8 KB

โหลดไฟล์ขนาด 7k ครั้งที่ 1 ขึ้น “TCP_MISS” หมายถึง squid ไม่มีไฟล์นี้อยู่ใน cache เมื่อโหลดเสร็จ squid จะเก็บไฟล์ไว้ใน cache ด้วย “SWAPOUT”

[root@fc11-64min ~]# wget http://192.168.1.1/files/tfile-7k.bin
==> access.log <==
1248507942.812     17 192.168.1.2 TCP_MISS/200 7417 GET http://192.168.1.1/files/tfile-7k.bin - DIRECT/192.168.1.1 application/octet-stream
==> store.log <==
1248507942.810 SWAPOUT 00 00000001 3F277563988F72945705D5ED41526CA2  200 1248507942 1248505810        -1 application/octet-stream 7000/7000 GET http://192.168.1.1/files/tfile-7k.bin

โหลดไฟล์ขนาด 7k ครั้งที่ 2 ขึ้น “TCP_MEM_HIT” หมายถึง squid มีไฟล์นี้ใน cache บน memory แล้ว สามารถดึงไฟล์จาก memory ได้เลย

[root@fc11-64min ~]# wget http://192.168.1.1/files/tfile-7k.bin
==> access.log <==
1248507971.779      0 192.168.1.1 TCP_MEM_HIT/200 7424 GET http://192.168.1.1/files/tfile-7k.bin - NONE/- application/octet-stream

ทดลองโหลดไฟล์ขนาด 9k

ทดลองโหลดไฟล์ 9k ซึ่งมีขนาดมากกว่า “maximum_object_size_in_memory” แต่ยังน้อยกว่าค่า “maximum_object_size” ซึ่งตั้งไว้ 4096 KB (4 Mbytes)

โหลดไฟล์ขนาด 9k ครั้งที่ 1 ขึ้น “TCP_MISS” หมายถึง squid ไม่มีไฟล์นี้อยู่ใน cache เมื่อโหลดเสร็จ squid จะเก็บไฟล์ไว้ใน cache ด้วย “SWAPOUT”

[root@fc11-64min ~]# wget http://192.168.1.1/files/tfile-9k.bin
==> access.log <==
1248508182.804      3 192.168.1.2 TCP_MISS/200 12418 GET http://192.168.1.1/files/tfile-9k.bin - DIRECT/192.168.1.1 application/octet-stream
==> store.log <==
1248508182.804 SWAPOUT 00 00000002 CEFDC390A1EE023973CBADC1A78D73C7  200 1248508182 1248508174        -1 application/octet-stream 12000/12000 GET http://192.168.1.1/files/tfile-9k.bin

โหลดไฟล์ขนาด 9k ครั้งที่ 2 ขึ้น “TCP_HIT” หมายถึง squid มีไฟล์นี้ใน cache แต่อยู่บน disk

[root@fc11-64min ~]# wget http://192.168.1.1/files/tfile-9k.bin
==> access.log <==
1248508281.238      0 192.168.1.2 TCP_HIT/200 12424 GET http://192.168.1.1/files/tfile-9k.bin - NONE/- application/octet-stream

ทดลองโหลดไฟล์ขนาด 5M

ทดลองโหลดไฟล์ 5M ซึ่งมีขนาดน้อยกว่า “maximum_object_size” ซึ่งตั้งไว้ 4096 KB (4 Mbytes)

โหลดไฟล์ขนาด 5k ครั้งที่ 1 ขึ้น “TCP_MISS” หมายถึง squid ไม่มีไฟล์นี้อยู่ใน cache เมื่อโหลดเสร็จ เนื่องจากมีขนาดไฟล์ใหญ่กว่าขนาด “maximum_object_size” โปรแกรม squid จะไม่เก็บไฟล์ไว้ใน cache  ขึ้น “RELEASE”

[root@fc11-64min ~]# wget http://192.168.1.1/files/tfile-5M.bin
1248509577.012    197 192.168.1.2 TCP_MISS/200 5000422 GET http://192.168.1.1/files/tfile-5M.bin - DIRECT/192.168.1.1 application/octet-stream
==> store.log <==
1248509577.012 RELEASE -1 FFFFFFFF 81F5E27F6F4A2D2CFB41BF48899FBFE5  200 1248509576 1248505985        -1 application/octet-stream 5000000/5000000 GET http://192.168.1.1/files/tfile-5M.bin

ไม่ว่าจะโหลดไฟล์ที่มีขนาดใหญ่กว่า “maximum_object_size” โปรแกรม squid จะไม่เก็บ cache ไว้เลย

ขนาดรวมไฟล์ cache ทั้งหมด

เมื่อเก็บไฟล์ cache มากจนกระทั่งมีขนาดไฟล์รวมทั้งหมด มากกว่าที่คอนฟิกไว้ในส่วน “cache_dir” ในที่นี้คอนฟิกไว้ 100 (100Mbytes)

ตรวจสอบขนาดของ cache_dir ด้วยคำสั่ง du

[root@fc11-64min ~]# cd /var/spool/squid
[root@fc11-64min squid]# du -sh
105M    .

เมื่อทดลองโหลดไฟล์เพิ่มเติม squid จะทำการเก็บไฟล์ใหม่ที่โหลดเสร็จ “SWAPOUT” แต่เนื่องจากขนาดมากกว่า “cache_dir” ดังนั้นจำเป็นต้องลบบางไฟล์ใน cache ออกไป ด้วย “RELEASE”

เช่นทดลองไฟล์ 4M เพิ่มเติม

[root@fc11-64min ~]# wget http://192.168.1.1/files/tfile-4M.bin
==> access.log <==
1248509870.685     91 192.168.1.2 TCP_MISS/200 4000422 GET http://192.168.1.1/files/tfile-4M.bin - DIRECT/192.168.1.1 application/octet-stream
==> store.log <==
1248509870.683 SWAPOUT 00 0000000E 93E941E788327BE1F0E0F028A1114B49  200 1248509870 1248505053        -1 application/octet-stream 4000000/4000000 GET http://192.168.1.1/files/tfile-4M.bin
1248509870.758 RELEASE 00 00000007 E43BBBD8932CA6266141E6BFFB46EFCC   ?         ?         ?         ? ?/? ?/? ? ?

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

Leave a Reply

Your email address will not be published.