Berawal dari keisengan membaca-baca referensi squid dari thread ini, saya sangat tertarik dengan penggunaan squid dengan dynamic library tcmalloc (thread-caching malloc).
Tcmalloc umumnya digunakan untuk optimasi pada kinerja MySQL (dalam beberapa benchmark menunjukkan MySQL 6 kali lebih cepat jika menggunakan tcmalloc) dibandingkan dengan menggunakan glibc. Namun, kata mas Domas Mituzas , tcmalloc tidak hanya bekerja pada MySQL, namun juga bekerja pada squid cache.
Masalah yang sering muncul pada squid adalah pada saat squid mengalami beban puncak (diakses dengan jumlah yang sangat besar) akan terjadi fragmentasi pada memory, yang mengakibatkan terjadinya lonjakan penggunaan cpu yang sangat signifikan.
Dengan menggunakan tcmalloc, fragmentasi pada memory dapat secara signifikan dapat dikurangi, sehingga squid bisa bekerja dengan lebih efisien. Sebagaimana ditunjukkan pada grafik dibawah :
How to…
Dalam kasus ini saya menggunakan Squid Cache versi 3.1.9 dengan opsi kompilasi sebagai berikut :
configure options: '--prefix=/usr' '--libexecdir=/usr/lib/squid' '--srcdir=.' '--datadir=/usr/share/squid' '--sysconfdir=/etc/squid' '--exec_prefix=/usr' '--bindir=/usr/sbin' '--sbindir=/usr/sbin' '--localstatedir=/var/spool/squid' '--enable-async-io=24' '--with-pthreads' '--enable-ecap' '--enable-linux-netfilter' '--enable-arp-acl' '--enable-epoll' '--enable-storeio=ufs,aufs' '--enable-icmp' '--enable-forward-log' '--enable-multicast-miss' '--enable-snmp' '--enable-htcp' '--enable-forw-via-db' '--enable-cache-digests' '--enable-default-err-language=English' '--enable-err-languages=English' '--enable-large-cache-files' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-referer-log' '--enable-useragent-log' '--enable-auth=basic,digest,ntlm' '--enable-carp' '--enable-follow-x-forwarded-for' '--with-large-files' '--with-maxfd=65536' --with-squid=/root/source/squid-3.1.9
Berjalan pada mesin berbasis Ubuntu Server 10.10 (Maverick).
Awalnya saya melakukan kompilasi manual dari sourcecode tcmalloc, namun banyak terdapat error..
ERROR: ld.so: object '/usr/local/lib/libtcmalloc.so' from LD_PRELOAD cannot be preloaded: ignored.
atau
lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/nanda/.gvfs
Alhasil.. make uninstall :D
Namun dengan sedikit utak-atik, akhirnya bisa juga si tcmalloc dipasangkan ke squid. Berikut langkah-langkahnya…
# wget http://google-perftools.googlecode.com/files/libgoogle-perftools0_1.6-1_i386.deb
# dpkg -i libgoogle-perftools0_1.6-1_i386.deb
# ldconfig
Cek apakah tcmalloc udah terinstall dengan baik…
# dpkg -l | grep malloc
Sip.. udah.. Sekarang tinggal mengintegrasikan ke squid.
# vim /etc/squid/squid.conf
Tambahkan tag loadable_modules /usr/lib/libtcmalloc.so.0, simpan konfigurasinya, kemudian restart / reconfigure service squid…
# lsof -n | grep malloc
Voila.. :)
kalau di terapkan di squid 2.7 bisa gk Mas fajar
sepertinya tidak bisa. :)