Jumat, 06 Juli 2012

Optimasi Squid

Hasil kumpulan dari pengalaman-pengalaman untuk mengoptimalkan kerja proxy server (SQUID), semoga proxy server SQUID tersebut akan bekerja lebih cepat dengan hit ratio lebih dari 50%.
## Jika ada beberapa situs terdekat yg mungkin hanya 1 hop, di-by pass saja supaya kerja Squid benar-benar utk yg jaraknya jauh
hierarchy_stoplist cgi-bin ? localhost domain-anda.com isp-anda.com domainku.web.id
acl QUERY urlpath_regex cgi-bin ? localhost domain-anda.com isp-anda.com
domainku.web.id
no_cache deny QUERY
acl langsung dst xxx.xx.xxx.x/xx
no_cache deny langsung
dimana :
dst = IP
misal 202.95.150.0/29
## Dari pengalaman 6 MB akan lebih cepat dan biarkan Squid bekerja lebih keras lagi
cache_mem 6 MB
cache_swap_low 98
cache_swap_high 99

## Maksimum obyek di hardisk dan di memori diupayakan lebih besar shg byte hit lebih tinggi (bisa dinaikkan lagi jika hardisk berkecepatan tinggi dan jumlahnya banyak dg memori yg lebih besar pula)
maximum_object_size 128 MB
maximum_object_size_in_memory 32 KB

## Jika memori 512 MB atau lebih besar silahkan cache diperbesar
ipcache_size 2048
ipcache_low 98
ipcache_high 99

## Utk heap replacement saya memakai LFUDA utk cache hardisk dan GDSF utk cache memori dg alasan di hardisk diprioritaskan obyek yg ukuran besar-besar dan di memori obyek yg ukurannya kecil-kecil utk disimpan
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF

## Idealnya ruang di hardisk yg anda pakai hanya sekitar 70% dari total krn semakin penuh Squid akan semakin pelan mencari tempat kosong, mis. utk cache 1 GB maka yg dipakai hanya 700MB (jangan 1GB dipakai semuanya). Jangan lupa hanya 1 direktori per drive krn faktor penghambat adalah kecepatan spindle hardisk lho, bukan terus dg memperbanyak direktori pada 1 hd akan mempercepat (hd orde milidetik, memori orde
nanodetik). Jadi mending hardisknya banyak tapi ukurannya kecil-kecil daripada hanya 1 berukuran besar. Terus jika OS-nya Linux pakailah FS-nya Reiser (versi 4 tercepat) dg metode akses aufs. Diskd optimal di FreeBSD tetapi tidak di Linux lho. Jangan lupa di partisi tsb noatime dan notail diaktifkan spy tidak menambah ekstra write saat menulis atau membaca. Intinya hardisk adalah faktor penghambat terbesar di Squid.
## saran kira2 70% dari 16GB
cache_dir aufs /cachez 12000 28 256
atau (utk ruang 4GB-an per hardisk)
cache_dir aufs /cachehardisk1 3000 8 256
cache_dir aufs /cachehardisk2 3000 8 256
cache_dir aufs /cachehardisk3 3000 8 256
cache_dir aufs /cachehardisk4 3000 8 256

## atau minimal di bawah ini supaya modifikasi tidak terlalu jauh
cache_dir diskd /cachez 12000 28 256 Q1=72 Q2=88
Rumus Squid cache Dir :
[[[ X/13 ] / 256] / 256] * 2, contoh :
12.000.000/13 = 923076,9 / 256 = 3605,8 / 256 = 14 * 2 = 28

## Log utk info yg vital saja dan diusahakan file-file log ada di hardisk tersendiri spy tidak mempengaruhi kecepatan direktori cache utamanya
log_fqdn off
log_icp_queries off
cache_log none
cache_store_log none
## Dg ‘menipu’ dan memaksa sedikit supaya akses obyek lebih intensif di lokal Squid dan waktu simpan ditambah sebelum proses validasi terjadi (mis. validasi terjadi per 3 jam dg penyimpanan obyek terlama 3 bulan, utk ftp bisa lebih lama lagi)
refresh_pattern ^ftp: 10080 95% 241920 reload-into-ims override-lastmod
refresh_pattern . 180 95% 120960 reload-into-ims override-lastmod

## Toleransi aborting dihilangkan saja
quick_abort_min 0
quick_abort_max 0
quick_abort_pct 98

## Mematikan dan merekonfigurasi Squid jangan terlalu cepat krn bisa mengakibatkan integritas file kacau shutdown_lifetime 10 seconds
## tidak perlu reservasi memori
memory_pools off

## Penting utk relasi dg sibling dg mengukur respons-nya via ICP dan ICMP (dengan syarat mesin sibling/parent tsb diijinkan untuk menerima ICMP)
icp_hit_stale on
query_icmp on

## Penting utk meningkatkan refresh pattern lebih lanjut
reload_into_ims on
pipeline_prefetch on
vary_ignore_expire on

## Sekali lagi Squid diperlukan utk mengambil yg jaraknya jauh, jarak dekat langsung saja
acl local-dst dst semuaalamatlokal semuaalamatipygdekat
acl local-domain dstdomain localhost domain-anda.com isp-anda.com domainku.web.id
always_direct allow localhost local-dst local-domain
always_direct deny all

## Tidak begitu diperlukan
##ie_refresh on

Sbg penutup ada beberapa lagi utk sedikit menaikkan kinerjanya Squid lagi.
1. Naikkan prioritas Squid via nice –20 (-20 tertinggi, terserah dinaikkan sampai berapa, intinya supaya diproses dg prioritas lebih tinggi dibanding daemon yg lain, default prio=0). Mis. startup skrip: /usr/bin/nice -n –20 squid -DNY ….
2. Naikkan batasan FD (file deskriptor) juga saat startup: ulimit -HSn 8192
3. Bukalah sebanyak mungkin port utk akses keluar (bukan ke dalam lho): echo 1024 32768 > /proc/sys/net/ipv4/ip_local_port_range
Secara umum kesimpulannya:
1. Pergunakanlah atau sebarkanlah direktori cache Squid pada banyak hardisk (kecil2 dg jumlah banyak lebih baik daripada besar2 dg jumlah sedikit).
2. Pergunakanlah RAM sebesar mungkin (yg juga terrefleksikan ke ukuran direktori cache-nya).
3. Pergunakanlah FS (file system) yg berkecepatan tinggi (mis. ReiserFS, noatime, notail) dg metode aufs.
4. Kompilasi ulang Squid dg opsi2 minimum yg dibutuhkan supaya lebih gesit dan jangan lupa menambah kemampuan threads hardisk-nya.
5. Saran Adam Aube: kurangi ukuran maksimum object yg bisa di-cache jika ternyata lebih pelan aksesnya (artinya penghematan bw harus seimbang dg kecepatan akses)
———– Atau dengan ditambahkan dibawah ini ————
refresh_pattern ^ftp: 10080 95% 241920 reload-into-ims override-lastmod
refresh_pattern . 180 95% 120960 reload-into-ims override-lastmod
refresh_pattern -i \.gif 15 75% 43200
refresh_pattern -i \.tif 10080 75% 43200 reload-into-ims
refresh_pattern -i \.bmp 10080 75% 43200 reload-into-ims
refresh_pattern -i \.(jpg|jpeg) 10080 75% 43200 reload-into-ims
refresh_pattern -i \.png 15 75% 43200 reload-into-ims
refresh_pattern -i \.pdf 10080 100% 43200 reload-into-ims
refresh_pattern -i \.exe 10080 100% 43200 reload-into-ims
refresh_pattern -i \.zip 10080 100% 43200 reload-into-ims
refresh_pattern -i \.gz 10080 100% 43200 reload-into-ims
refresh_pattern -i \.rar 10080 100% 43200 reload-into-ims
refresh_pattern -i \.ace 10080 100% 43200 reload-into-ims
refresh_pattern -i \.js 4320 50% 10080
refresh_pattern -i \.css 4320 50% 10080
refresh_pattern -i \.swf 4320 50% 10080 reload-into-ims
refresh_pattern -i \.htm 120 50% 10080 reload-into-ims
refresh_pattern -i \.html 120 50% 10080 reload-into-ims
refresh_pattern ^http://*.friendster.com/.* 720 100% 4320
refresh_pattern ^http://mail.yahoo.com/.* 720 100% 4320
refresh_pattern ^http://*.yahoo.*/.* 720 100% 4320
refresh_pattern ^http://*.yimg.*/.* 720 100% 4320
refresh_pattern ^http://*.gmail.*/.* 720 100% 4320
refresh_pattern ^http://*.google.*/.* 720 100% 4320
refresh_pattern ^http://*.akamai.*/.* 720 100% 4320
refresh_pattern ^http://*.googlesyndication.*/.* 720 100% 4320
refresh_pattern ^http://*.plasa.*/.* 720 100% 4320
refresh_pattern ^http://*.telkom.*/.* 720 100% 4320
--------- Atau juga bisa dengan ditambahkan ini ---------
Setelah berkali-kali mencoba setting squid yang paling optimal, sepertinya ini adalah setting yang terbaik dari apa yang saya terapkan pada server Squid Proxy Server di kampus STMIK PPKIA Tarakanita Rahmawati.
Terimakasih juga beberapa email yang masuk ke kotak saya, menanyakan optimasi apa yang sudah perbuat untuk server kampus kami. Mohon maaf sekali saya baru bisa menuliskan optimasi tersebut. Alhamdulillah ada sedikit waktu untuk menceritakan sedikit pengalaman ini.
Bagi teman-teman yang biasa membaca FAQ dan manual dari Squid mungkin referensi bisa menjadi sedikit penyemangat untuk estimasi yang lebih baik, tapi tetap saya sarankan untuk membaca manual Squid lebih lanjut jika ada yang kurang dimengerti.
Squid adalah software web caching server yang banyak dipergunakan di dunia untuk melakukan sharing atas fasilitas Internet.
 
cache_replacement_policy heap LFUDA
maximum_object_size_in_memory 50 KB
maximum_object_size 50 MB

cache_mem 100 MB
cache_swap_low 90
cache_swap_high 95
cache_dir aufs /var/spool/squid 40000 16 256

logfile_rotate 10
memory_pools off

quick_abort_min 0 KB
quick_abort_max 0 KB

log_icp_queries off
client_db off
buffered_logs on
half_closed_clients off

hosts_file /etc/hosts
 
Hemm.. berikut penjelasan tentang setting yang saya lakukan :
cache_replacement_policy heap LFUDA
Pada saat sebuah objek tidak ditemukan pada cache, statement ini menggambarkan objek mana dari cache yang harus diganti. Setting optimum yang dapat diterapkan adalah heap LFUDA (Last Frequently Used with Dynamic Aging), karena objek yang paling sering diakses akan dipertahankan dengan memperhatikan ukuran file yang ada. Opsi ini akan menguntungkan kita untuk objek berukuran besar, agar tidak selalu diambil ke situs yang bersangkutan. Setting tersebut berhubungan dengan setting “maximum_object_size”.
maximum_object_size 50 MB
Jika kita menggunakan heap LFUDA, kita harus menaikkan nilai pada setting maximum_object_size diatas 1024 KB (default). Saya rekomendasikan untuk tidak terlalu besar, karena lebih baik melakukan proses cache pada objek kecil namun sering diakses oleh user, daripada menyimpan objek besar namun hanya diakses oleh 4 orang user.
hosts_file /etc/hosts
Untuk alamat hosts yang sering diakses atau alamat situs lokal dalam Intranet atau local network, hendaknya dituliskan pada file /etc/hosts, karena mempercepat akses karena nomor IP yang dituliskan pada file tersebut.
maximum_object_size_in_memory 50 KB
Jika Anda ingin mendukung file berukuran besar dari memori, direkomendasikan untuk memberikan nilai rendah. File berukuran besar akan menghabiskan sumberdaya RAM Anda, dengan memberikan ukuran byte yang tepat akan dapat memudahkan situasi swap-in dan swap-out antara cache pada memori dan disk.
cache_dir aufs /cache/squid 40000 16 256
Rekomendasi yang sangat saya sarankan adalah menggunakan “aufs“, dengan format ini cache akan menggunakan format standar squid “ufs“, namun ditambahkan fasilitas async-I/O.
Ukuran cache pada server kami (storage size limit) adalah 10GB, dengan kedalaman folder sebanyak 16 dan 256 file cache untuk setiap folder.

cache_mem 100 MB
Squid akan mempergunakan maximum RAM untuk memberikan kepuasan pada request yang muncul setiap kali dari user. Ukuran 100 MB ini akan memberikan ruang pada memori fisik untuk terus menempatkannya pada memori sampai kondisi penuh. Jika kondisi telah mencapai puncaknya, maka squid akan memilih pada lokasi memori yang akan di-swap pada harddisk. Ukuran besar pada cache_mem akan mengurangi waktu ‘hold’ transit pada request, namun akan mengurangi memori komputer Anda. Jadi berhati-hatilah untuk memanfaatkannya. Maksimum saya sarankan dibawah 10% dari ukuran RAM Anda, karena operasional Squid lain juga membutuhkan bagian pada RAM.
cache_swap_low 90
Setting ini akan membuat masa untuk Squid melakukan pembersihan cache. Jika Anda memiliki cache pada harddisk berukuran 10 GB, pada penggunaan 9 GB squid akan melakukan pembersihan cache.
cache_swap_high 95
Jika setting ini akan membuat sisi agresif Squid akan bekerja. Begitu mencapai kondisi nilai 95% dari kapasitas, maka squid akan melakukan pembersihan cache. Disarankan untuk tidak disetting diatas 95%, karena Anda kecepatan Squid dalam melakukan proses dan banyaknya user akan dengan cepat membanjiri cache. Capaian 100% limit storage bisa muncul dengan cepat. Nilai 94% atau 95% adalah kondisi toleransi yang lebih baik selama ini dari pengalaman saya.
memory_pools off
Pada saat rutinitas squid menurun, squid akan melepaskan object yang tersimpan pada RAM untuk diletakkan pada storage.
quick_abort_min 0 KB
Dengan setting 0KB ini akan memberikan optimasi squid lebih baik bagi user yang tiba-tiba membatalkan request. Dengan memberikan nilai 0KB akan menon-aktifkan pengiriman data pada jaringan yang akhirnya dapat mengoptimalkan bandwidth.
quick_abort_max 0 KB
User yang tidak sabar pada proses request akan dengan cepat membatalkan prosesnya, baik itu browsing maupun downloading. Dengan memberikan setting 0KB akan menghentikan Squid untuk tidak melanjutkan prosesnya pada situs yang diminta.
log_icp_queries off
Dengan kondisi “on” berarti Squid akan memberikan ekstra I/O threads untuk mengamati user yang sedang melakukan koneksi peer-to-peer.
client_db off
Jika Anda aktifkan, maka Squid akan melakukan proses perhitungan statistik pada akses user. Layanan ini berguna bagi Anda yang ingin membatasi jumlah request pada klien yang melakukan request.
buffered_logs on
Buffer akan ditulis pada file Log, selain akan mempermudah akses berikutnya, juga memberikan optimasi kepada server squid lebih baik
half_closed_clients off
Squid akan menonatifkan koneksi pada klien yang lama tidak melakukan request.
Setting berikutnya yang juga perlu untuk meng-optimasi kernel jaringan. Optimasi yang dilakukan adalah dengan membuka port sebanyak-banyaknya agar akses user semakin lebar.
Optimasinya dengan membuka file ‘ip_local_port_range‘ yang terletak pada folder ‘/proc/sys/net/ipv4‘. Tambahkan perintah ‘1024 65000‘.
Tuliskan perintah tersebut tanpa tanda petik, fungsi dari perintah tersebut adalah dengan membuka port 1024 sampai dengan 65000 untuk akses squid bagi seluruh user dalam jaringan.
Jangan lupa, buka port tersebut pada firewall Anda, jangan sampai tertutup, karena percuma saja kita lakukan setting tersebut, sedangkan firewall melarang informasi untuk masuk dan keluar.
Oke, sekian update yang dapat saya berikan bagi Anda yang menggunakan proxy server Squid. Lain waktu akan saya tambahkan informasi lain. Jangan lupa juga untuk selalu meng-update squid versi terbaru, untuk menjaga agar server Anda tidak rentan di ‘hack’ hehe .

sumber : http://kuasa66.wordpress.com/2009/02/03/optimasi-squid/

Tidak ada komentar:

Posting Komentar