bagaimana terjadinya TCP_MISS, TCP_HIT, TCP_REFRESH_UNMODIFIED :-D berdasarkan debug refresh_pattern
langsung aja , sy mulai. Bismillah
#tambahkan config berikut pada squid.conf
#----------------------------- ----------
cache_store_log /var/log/squid/store.log
debug_options ALL,1 22,3
#----------------------------- -----------
kita bahas TCP_MISS dulu ya :-)
request pertama :
buka browser anda, dan paste link berikut : http://www.w3schools.com/ images/pulpit.jpg
buka file cache.log, lalu cari debug utk link yg dibuka tadi.
contoh debug:
2014/03/01 08:25:58.304 kid1| refresh.cc(540) getMaxAge: getMaxAge: 'http://www.w3schools.com/ images/pulpit.jpg'
2014/03/01 08:25:58.594 kid1| ctx: enter level 0: 'http://www.w3schools.com/ images/pulpit.jpg'
2014/03/01 08:25:58.594 kid1| refresh.cc(247) refreshCheck: refreshCheck: 'http://www.w3schools.com/ images/pulpit.jpg'
2014/03/01 08:25:58.594 kid1| refresh.cc(262) refreshCheck: refreshCheck: Matched '\.jpg$ 3600 20%% 7200'
2014/03/01 08:25:58.594 kid1| refresh.cc(264) refreshCheck: age: 61
2014/03/01 08:25:58.594 kid1| refresh.cc(266) refreshCheck: check_time: Sat, 01 Mar 2014 01:26:58 GMT
2014/03/01 08:25:58.594 kid1| refresh.cc(268) refreshCheck: entry->timestamp: Sat, 01 Mar 2014 01:25:57 GMT
2014/03/01 08:25:58.594 kid1| refresh.cc(171) refreshStaleness: FRESH: expires 1393640757 >= check_time 1393637218
2014/03/01 08:25:58.594 kid1| refresh.cc(288) refreshCheck: Staleness = -1
2014/03/01 08:25:58.594 kid1| refresh.cc(373) refreshCheck: refreshCheck: object isn't stale..
2014/03/01 08:25:58.594 kid1| refresh.cc(375) refreshCheck: refreshCheck: returning FRESH_EXPIRES
2014/03/01 08:25:58.594 kid1| http.cc(482) cacheableReply: YES because HTTP status 200
saya coba jelaskan sedikit disini cara membaca debug-nya (CMIIW)
1. 2014/03/01 08:25:58.304 kid1| refresh.cc(540) getMaxAge: getMaxAge: 'http://www.w3schools.com/ images/pulpit.jpg'
squid mengambil max-age dari objek pulpit.jpg
bagaimana mengetahui response header cache-control max-age? liat..diskusi kita sebelumnya di menu Files :-D
2. 2014/03/01 08:25:58.594 kid1| refresh.cc(247) refreshCheck: refreshCheck: 'http://www.w3schools.com/ images/pulpit.jpg'
2014/03/01 08:25:58.594 kid1| refresh.cc(262) refreshCheck: refreshCheck: Matched '\.jpg$ 3600 20%% 7200'
squid mencocokkan refresh_pattern yg anda buat di squid.conf dan ternyata cocok dengan '\.jpg$ 3600 20%% 7200' karena di squid.conf saya buat
refresh_pattern -i \.jpg$ 60 20% 120 override-expire
INGAT : pada debug menggunakan detik, pada refresh_pattern menggunakan menit
60 menit = 3600 detik , 120 menit = 7200 detik
3. 2014/03/01 08:25:58.594 kid1| refresh.cc(264) refreshCheck: age: 61
age = 61 , disini mksdnya adalah lama objek didalam cache adalah 61 detik. dari mana dapat nilai 61 detik ini ?
rumusnya = check_time - entry->timestamp
trus apa itu entry->timestamp dan check_time ? sabarrrrrr...sbntr lg dijelaskan :-D
4. 2014/03/01 08:25:58.594 kid1| refresh.cc(266) refreshCheck: check_time: Sat, 01 Mar 2014 01:26:58 GMT
2014/03/01 08:25:58.594 kid1| refresh.cc(268) refreshCheck: entry->timestamp: Sat, 01 Mar 2014 01:25:57 GMT
check_time: Sat, 01 Mar 2014 01:26:58 GMT = tanggal,jam,menit,detik pengecekan objek
entry->timestamp: Sat, 01 Mar 2014 01:25:57 GMT = tanggal,jam,menit,detik objek disimpan kedalam cache
INGAT : disini menggunakan GMT, kalo mau dicocokin dgn local time , misal GMT+7 (WIB) , tinggal tambah 7 jam aja.
jadi check_time : Sat, 01 Mar 2014 08:26:58 GMT+7
entry->timestamp:Sat, 01 Mar 2014 08:25:57 GMT+7
5. 2014/03/01 08:25:58.594 kid1| refresh.cc(171) refreshStaleness: FRESH: expires 1393640757 >= check_time 1393637218
2014/03/01 08:25:58.594 kid1| refresh.cc(288) refreshCheck: Staleness = -1
squid ngecek klo objeknya FRESH, diliat dari expires 1393640757 >= check_time 1393637218 , artinya tanggal expire objek tadi "masih" lebih besar (masih didepan) dari tanggal kita cek
expire = 1393640757 (unix time stamp)= Sat Mar 1 02:25:57 GMT = Sat Mar 1 09:25:57 GMT+7
check_time = 1393637218 (unix time stamp) = Sat Mar 1 01:26:58 GMT = Sat Mar 1 08:26:58 GMT+7
Staleness = -1 utk menyatakan klo objek tsb fresh
CATET : Return values:
-1 If the response is fresh.
>0 The amount of staleness.
0 NOTE return value of 0 means the response is stale.
6. 2014/03/01 08:25:58.594 kid1| http.cc(482) cacheableReply: YES because HTTP status 200
mksdnya objek ini bisa disimpan kedalam cache. bagaimana ngecek kalau objek tsb disimpan ke cache? berikut dibawah ini lanjutannya :-)
skrg coba buka file store.log, cari SWAPOUT dgn objekhttp://www.w3schools.com/ images/pulpit.jpg
di file store.log
1393637159.734 SWAPOUT 00 00005858 9D54B32FE3DA33AA0D39E0BCF7305E 30 200 1393637157 1389002194 1393640757 image/jpeg 75672/75672 GEThttp://www.w3schools.com/ images/pulpit.jpg
SWAPOUT disini mksdnya bahwa objek tersebut disimpan ke cache disk, liat tanggal,jam,menit detiknyanya adalah 1393637159.734
1393637159.734 = Sat Mar 1 01:25:59 GMT , coba liat keatas, pada debug, entry->timestamp: Sat, 01 Mar 2014 01:25:57 GMT. sama bukan ????
pada access.log bagaimana statusnya, check it out :-D
coba buka file access.log, di file access.log terlihat :
1393637159.736 1748 10.10.7.131 TCP_MISS/200 76099 GEThttp://www.w3schools.com/ images/pulpit.jpg - HIER_DIRECT/66.29.212.110 image/jpeg
1393637159.736 (unix time stamp) = Sat Mar 1 01:25:59 GMT , sama dengan tanggal dan jam objek disimpan ke disk cache (liat penjelasan store.log diatas)
TCP_MISS/200
MISS = The response object delivered was the network response object.
200 = OK (sucsessfull transaction)
mksdnya TCP_MISS/200 adalah request berhasil (200/OK) dan objek yg diminta diambil langsung dari server asal yaitu HIER_DIRECT/66.29.212.110 (MISS)
Ref :
http://tools.ietf.org/rfc/ rfc2616 Halaman 58
di test di Squid Cache: Version 3.4.3
Demikian cara sy menganalisa knp muncul TCP_MISS di access.log (tail -f /var/log/squid/access.log )
akhir tulisan sore ini, mengutip dr bunda Dorce :
"kesempurnaan adalah milik Allah Subhanahu wa Ta’ala, kekhilafan dan kesalahan datangnya dari saya" :-)
bagaimana dgn rekan2? ditunggu koreksi, diskusi dan komentarnya.
------------------------------ ----------------------
Lanjutan utk TCP_HIT
request kedua :
buka browser anda, dan paste link berikut : http://www.w3schools.com/ images/pulpit.jpg
buka file cache.log, lalu cari debug utk link yg dibuka tadi.
contoh debug:
2014/03/01 08:33:09.564 kid1| refresh.cc(247) refreshCheck: refreshCheck: 'http://www.w3schools.com/ images/pulpit.jpg'
2014/03/01 08:33:09.564 kid1| refresh.cc(262) refreshCheck: refreshCheck: Matched '\.jpg$ 3600 20%% 7200'
2014/03/01 08:33:09.564 kid1| refresh.cc(264) refreshCheck: age: 432
2014/03/01 08:33:09.564 kid1| refresh.cc(266) refreshCheck: check_time: Sat, 01 Mar 2014 01:33:09 GMT
2014/03/01 08:33:09.564 kid1| refresh.cc(268) refreshCheck: entry->timestamp: Sat, 01 Mar 2014 01:25:57 GMT
2014/03/01 08:33:09.564 kid1| refresh.cc(171) refreshStaleness: FRESH: expires 1393640757 >= check_time 1393637589
2014/03/01 08:33:09.564 kid1| refresh.cc(288) refreshCheck: Staleness = -1
2014/03/01 08:33:09.564 kid1| refresh.cc(373) refreshCheck: refreshCheck: object isn't stale..
2014/03/01 08:33:09.564 kid1| refresh.cc(375) refreshCheck: refreshCheck: returning FRESH_EXPIRES
sdh bisa menjelaskan mksd debug diatas ?
dari debug kita liat :
2014/03/01 08:33:09.564 kid1| refresh.cc(264) refreshCheck: age: 432
2014/03/01 08:33:09.564 kid1| refresh.cc(266) refreshCheck: check_time: Sat, 01 Mar 2014 01:33:09 GMT
2014/03/01 08:33:09.564 kid1| refresh.cc(268) refreshCheck: entry->timestamp: Sat, 01 Mar 2014 01:25:57 GMT
2014/03/01 08:33:09.564 kid1| refresh.cc(171) refreshStaleness: FRESH: expires 1393640757 >= check_time 1393637589
2014/03/01 08:33:09.564 kid1| refresh.cc(288) refreshCheck: Staleness = -1
2014/03/01 08:33:09.564 kid1| refresh.cc(373) refreshCheck: refreshCheck: object isn't stale..
2014/03/01 08:33:09.564 kid1| refresh.cc(375) refreshCheck: refreshCheck: returning FRESH_EXPIRES
age : 432 , artinya msh lbh kecil dari max-age 3600 berarti objek msh FRESH
atau
expires 1393640757 >= check_time 1393637589
2014/03/01 08:33:09.564 kid1| refresh.cc(288) refreshCheck: Staleness = -1
2014/03/01 08:33:09.564 kid1| refresh.cc(373) refreshCheck: refreshCheck: object isn't stale..
coba buka file access.log
1393637589.573 10 10.10.7.131 TCP_HIT/200 76107 GEThttp://www.w3schools.com/ images/pulpit.jpg - HIER_NONE/- image/jpeg
1393637589.573 = check_time: Sat, 01 Mar 2014 01:33:09 GMT (tanggal objek dicek kedua kalinya)
TCP_HIT/200
HIT = The response object delivered was the local cache object.
200 = OK (sucsessfull transaction)
mksdnya TCP_HIT/200 adalah request berhasil (200/OK) dan objek yg diminta diambil langsung dari cache proxy HIER_NONE/- (HIT)
terlihat sdh tidak ada IP web server 66.29.212.110
terlihat sdh tidak ada IP web server 66.29.212.110