Sebagai akselerator akses website, maka squid berada antara klien dan satu atau lebih website.


Keuntungan yang diperoleh yaitu :
  • Caching
File yang sering diakses akan disimpan dalam cache memory ataupun disk. Squid akan sangat efisien apabila web server menggunakan proses yang besar dalam menghasilkan data atau jika file berada dalam media file yang lambat.
Caching akan tidak berjalan apabila web server  tidak menghasilkan header yang dibutuhkan squid, misalnya script CGI dan aplikasi sejenis, dan URL yang tidak cocok untuk caching seperti halnya URL yang hasilnya tergantung dari permintaan client, dimana seharusnya setiap URL menghasilkan hasil yang sama.
  • Fleksibilitas
Web server dibelakang squid bias secara fleksibel dipindah/diupgrade ke system lain dengan cukup merubah squid.conf nya saja. Misalnya jika sebuah website mati, maka bias diarahkan  ke server lain, sehingga cepat on-line kembali.

Kapan melakukan Cache
Caching tidak akan efektif bila permintaan data klien lebih besar dibandingkan kemampuan squid menyimpan data, baik itu di memori maupun disk. Pada kebanyakan kasus yang terjadi yaitu squid akan menulis cache dalam swap dan mengeluarkannya kembali terlalu sering (lihat file store_log log).
Berikut beberapa analisa untuk melihat kesesuaian konfigurasi squid.

1. Prosentasi Permintaan Ganda
- Prosentasi ini menunjukkan seberapa sering URL diminta dalam jangka waktu tertentu.
- ( 1 – unik URL / total URL) * 100
- 100% berarti hanya 1 URL yang diminta
- 0 % berarti tidak ada URL ganda
- Prosentasi kecil berarti tidak memberi untung pada caching squid

Untuk prosentasi yang dihitung otomatis oleh squid dapat dilihat dengan cara :
$ squidclient -p 80 mgr:info | grep Ratios
Cache information for squid:
 Request Hit Ratios: 5min: 71.7%, 60min: 49.1%
 Byte Hit Ratios: 5min: 85.9%, 60min: 54.0%
 Request Memory Hit Ratios: 5min: 2.5%, 60min: 4.9%
 Request Disk Hit Ratios: 5min: 49.1%, 60min: 51.2%
 Storage Swap size: 48621658 KB
 Storage Mem size: 65528 KB
 Mean Object Size: 12.70 KB
 Requests given to unlinkd: 0


2. Besar kebutuhan storage untuk cache
Squid harus mempu menampung lebih besar dari kebutuhan / permintaan data website, misalnya kapasitas disk Squid 10 G dan permintaan mencapai 20G setiap harinya, maka penggunaan squid akan menghabiskan waktu saja, karena harus melakukan swap data di cache dan penggunaan I/O yang tinggi.
Besarnya cache di direktori cache_dir harus cukup besar untuk mengantisipasi pertumbuhan permintaan data.

3. Rata-rata besar obyek
Squid melakukan pengelolaan cache dalam batasan/ukuran tertentu, sehingga untuk obyek yang besar dan kecil dibutuhkan konfigurasi yang berbeda, atau ektremnya file yang sangat besar tidak perlu disimpan dalam cache.

Studi Kasus
Proxy Hotspot ditempat saya:

$ squidclient -p 80 mgr:info
HTTP/1.0 200 OK
Server: squid/2.6.STABLE21
Date: Wed, 24 Feb 2010 10:40:41 GMT
Content-Type: text/plain
Expires: Wed, 24 Feb 2010 10:40:41 GMT
Last-Modified: Wed, 24 Feb 2010 10:40:41 GMT
X-Cache: MISS from ServerDarutTaqwa
Proxy-Connection: close

Squid Object Cache: Version 2.6.STABLE21
Start Time: Sat, 20 Feb 2010 10:26:07 GMT
Current Time: Wed, 24 Feb 2010 10:40:41 GMT
Connection information for squid:
 Number of clients accessing cache: 0
 Number of HTTP requests received: 1145760
 Number of ICP messages received: 581593
 Number of ICP messages sent: 581593
 Number of queued ICP replies: 0
 Number of HTCP messages received: 0
 Number of HTCP messages sent: 0
 Request failure ratio:  0.00
 Average HTTP requests per minute since start: 198.4
 Average ICP messages per minute since start: 201.4
 Select loop called: 17121470 times, 20.236 ms avg
Cache information for squid:
 Request Hit Ratios: 5min: 60.2%, 60min: 50.9%
 Byte Hit Ratios: 5min: 64.4%, 60min: 47.1%
 Request Memory Hit Ratios: 5min: 3.5%, 60min: 5.0%
 Request Disk Hit Ratios: 5min: 52.4%, 60min: 53.0%
 Storage Swap size: 48622284 KB
 Storage Mem size: 65532 KB
 Mean Object Size: 12.70 KB
 Requests given to unlinkd: 0
Median Service Times (seconds)  5 min    60 min:
 HTTP Requests (All):   0.01035  0.02069
 Cache Misses:          0.89858  0.85130
 Cache Hits:            0.00865  0.00767
 Near Hits:             0.00000  0.64968
 Not-Modified Replies:  0.00286  0.00379
 DNS Lookups:           0.00464  0.00464
 ICP Queries:           0.00510  0.00453
Resource usage for squid:
 UP Time: 346473.578 seconds
 CPU Time: 4897.484 seconds
 CPU Usage: 1.41%
 CPU Usage, 5 minute avg: 0.81%
 CPU Usage, 60 minute avg: 1.24%
 Process Data Segment Size via sbrk(): 0 KB
 Maximum Resident Size: 491440 KB
 Page faults with physical i/o: 1
Memory accounted for:
 Total accounted:       321602 KB
 memPoolAlloc calls: 171018880
 memPoolFree calls: 162918841
File descriptor usage for squid:
 Maximum number of file descriptors:   11072
 Largest file desc currently in use:     81
 Number of file desc currently in use:   67
 Files queued for open:                   0
 Available number of file descriptors: 11005
 Reserved number of file descriptors:   100
 Store Disk files open:                   3
 IO loop method:                     kqueue
Internal Data Structures:
 3829225 StoreEntries
  15127 StoreEntries with MemObjects
  15045 Hot Object Cache Items
 3829160 on-disk objects

Kalau dilihat Rationya maka :

Cache information for squid:
 Request Hit Ratios: 5min: 60.2%, 60min: 50.9%
 Byte Hit Ratios: 5min: 64.4%, 60min: 47.1%
 Request Memory Hit Ratios: 5min: 3.5%, 60min: 5.0%
 Request Disk Hit Ratios: 5min: 52.4%, 60min: 53.0%
 Storage Swap size: 48622284 KB
 Storage Mem size: 65532 KB
 Mean Object Size: 12.70 KB
 Requests given to unlinkd: 0

Mengapa prosentase rationya rendah ?

1. Kalau dilihat contoh kasus diatas, maka dapat dilakukan evaluasi sebagai berikut :
Website mana yang sering diakses, coba lihat di access_log?  Ternyata setelah diamati banyak yang akses mail.google.com, facebook.com, meebo.com, dimana website tersebut setiap URLnya bersifat spesifik untuk setiap user yang artinya tidak akan bermanfaat banyak untuk caching squid.

2. perl -lane ‘$t += $F[4]; $u += $F[4] unless $seen{$F[6]}++;’ -e ‘END { print “unique=$u total=$t” }’ /var/log/squid/access.log
unique=31224384 total=69307469
Ratio = (1 – 31224384/69307469) * 100% = 54,95%
Artinya memang URL yang diminta hanya 54,95% saja yang ganda

3. Perhitungan dilakukan jam berapa? Yaitu jam 10 pagi. Ini berbeda dengan statistik Ratio jika dipanggil jam 8 Pagi dan jam 3 Sore, sebab aktifitas pemakai Squid juga berbeda, kalau pagi baca berita dimana ini akan baik baik caching squid.

Kesimpulan ?

1. Squid di kantor kalau hanya dimanfaatkan untuk caching saja maka dapat dikatakan belum/tidak optimal
2. Proxy internet dan cache internet dapat dipisahkan.