Menangani Squid Proxy server yang lambat

bismillah ,

hari ini saya cukup di buat bingung ketika squid proxy server kami yang harus nya membuat akses inet lebih cepat , malah terasa lambat ketika menggunakan proxy setelah coba cek , saya coba matiin dulu redirect NAT rule di mikrotik , kemudian saya coba remote squid server nya

bit@bit-X200CA:~$ ssh root@192.168.44.2

perintah  yang saya lakukan adalah perintah “TOP”  saya ingin melihat , proses apa yang memakan cpu atau  memori yang besar

root@proxy:~# top

blg-2

hasil nya , ternyata untuk penggunaan memory dari 16 Gb hampir 13 Gb yang free,  walaupun load average: 13,63, 10,12, 9,68 memang tinggi ,yang artinya 13.63 (<1 menit) 10.12 (5 menit) 9,68 (15 menit) , squid service yang menjadi service utama malah hanya memakan 1,7% CPU ,  msih belum sya pahmi dimana masalah nya , setelah saya coba analisa setiap item informasi yang di tmpilkan , dengan coba search di mbah google ,alhamdulillah ada titik terang , ternyata Yang harus anda cermati dari top bukan cuma load memory dan %cpu, tapi ada   4 bari di bagian  yang berisi info Tasks,%CPU(s), KiB Mem dan KiB swap, untuk task adalah informasi proses yang ada dalam server ,

KiB Mem adalah informasi memory , yaitu memroy terpakai,total mempry, free dan buffers.

KiB Swap , berisi informasi swap

Nah hal penting yang ada pada informasi yang di tampilkan oleh perintah “top” adalh pada %CPU(S)

%Cpu(s): 0,1 us, 0,4 sy, 0,0 ni, 36,4 id, 63,0 wa, 0,0 hi, 0,1 si, 0,0 st

beberapa pejelasan yang saya ketahui

  • %us adalah penggunaan CPU oleh Task yang di jalankan user, seperti misal squid,nginx, mysql, apache, php-fpm dll. Nilai paling rendah adalah 0% (sedikit pemakaian), dan paling tinggi 100% (cpu abuse by task)
  • %ni adalah jumlah penggunaan cpu oleh task yang di jalankan user, yang priority nya kita set manual, misal pada saat kita set worker proses pada saat kita install nginx webserver
  • %id adalah nilai “idle” cpu. Semakin tinggi nilai ini (100%) menandakan CPU tidak sedang digunakan dan tersedia untuk dimanfaatkan kerja unutk respon yang cepat. Semakin rendah nilainya (0%) menandakan bahwa CPU sedang bekerja keras dan CPU kemungkinan tidak bisa melakukan/merespon printah(proses) yang selanjutnya dengan cepat.
  • %sy adalah system cpu time , yaitu presentasi CPU time yang di gunakan pada lingkungan kernel,Nilai %sy yang tinggi mengindikasikan adanya masalah dengan config kernel dan driver server kita.
  • %hi adlah hardware irq,yaitu presentasi CPU time yang di gunakan untuk menengani hardware interrupts, hardware
    interrupts digenerate oleh perangkat hardware (network card, keyoard, usb) ketika membutuhkan signal tertentu terhadap CPU.
  • %st adalah steal time, yaitu presentasi CPU time yang di gunakan dalam lingkungan virtual, misalnya pada node vps,menunjukan dahwa resource CPU tidak tersedia untuk suatu mesin virtual karena diambil oleh mesin virtual lainnya.
  • %si adalah presentasi CPU Time yang di gunakan untuk menangani software interrupts
  • %wa adalah waktu tunggu (iowait) proses IO (input output) ke file/harddisk , nah hal inilah yang ada kasus saya , yang ternyata Bila Load Average an tinggi dan %wa juga tinggi, maka ini berarti bahwa ada kesibukan baca dan tulis (IO) ke file/harddisk yang menyebabkan CPU terpaksa “harus” menunggu proses baca dan tulis selesai sebelum melanjutkan ke proses berikutnya,Semakin tinggi nilai %wa mengindikasikan bahwa kecepatan IO pada Hardisk  sangatlah rendah.

kita melakukan cek kecepatan I/O harddisk dengan perintah

root@proxy:~# dd if=/dev/zero of=iotest bs=64k count=16k conv=fdatasync && rm -rf iotest

blg-3

dari gambar diatas ,kecepata I/O harddisk server hanya 1,2 Mb/s , yang normal nya kecepatan I/O sebuah hardisk harus lebih dari 50 Mb/s , jika tidak maka service dalam server akan mengalami high cpu load, crash, dan server susah di akses, %wa yang tinggi biasanya bisa diatasi dengan mematikan log (access/error log apache/nginx), memperbesar buffer, cache,  memindah temporary file ke ram (tmpfs) yang tujuannya meminimalisir penggunaan I/O ke harddisk.

mungkin langkah pertama saya mencoba untuk memindah temporary file ke ram (tmpfs) yang tujuannya meminimalisir penggunaan I/O ke harddisk.dikarenakan I/O di RAM akan lebih cepat dari pada Hardisk , dan mengurangi akses system ke hardisk , berikut langkah yang saya lakukan untuk memindah temporary file ke ram (tmpfs)  .

edit fstab

root@proxy:~# pico /etc/fstab

tambahkan

tmpfs /tmp tmpfs defaults,noexec,nosuid 0 0

di /etc/fstab

blg-7

exit dan save ,kemudia kita mount

root@proxy:~# mount -a

chek dengan df -h

root@proxy:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 138G 78G 53G 60% /
none 4,0K 0 4,0K 0% /sys/fs/cgroup
udev 7,9G 4,0K 7,9G 1% /dev
tmpfs 1,6G 568K 1,6G 1% /run
none 5,0M 0 5,0M 0% /run/lock
none 7,9G 0 7,9G 0% /run/shm
none 100M 0 100M 0% /run/user
/dev/sda6 94G 86G 5,3G 95% /cache-1
/dev/sda7 94G 83G 7,5G 92% /cache-2
/dev/sda8 94G 87G 4,8G 95% /cache-3
tmpfs 7,9G 0 7,9G 0% /tmp

dari hasil di atas juga terlihat kalau disk cache saya sudah penuh , mungkin ini salah satu penyebab lambat nya I/O harddisk server , akhir nya saya memutuskan untk mencoba menghapus cache squid , dan nanti akan build ulang,

pertama stop service squid

root@proxy:~# squid -k shutdown
root@proxy:~# ps -e|grep squid
 1424 ? 00:00:00 squid
 1426 ? 02:18:39 squid
21846 ? 00:00:26 squidGuard
21847 ? 00:00:02 squidGuard
21848 ? 00:00:02 squidGuard
21849 ? 00:00:01 squidGuard
21850 ? 00:00:01 squidGuard
root@proxy:~# ps -e|grep squid
 1424 ? 00:00:00 squid
 1426 ? 02:18:39 squid
root@proxy:~# ps -e|grep squid
root@proxy:~#

remove folder cache

root@proxy:/etc/apache2# rm -rf /cache-1

root@proxy:/etc/apache2# rm -rf /cache-2

root@proxy:/etc/apache2# rm -rf /cache-3

proses diatas memakan cukup banyaka waktu di karenakan ukuran cache yang cukup besar yang masing-masing mencapai lebih 80 Gb,setelah proses penghapusan selesai , kita, bisa cek dengan perintah ls di folder cache.

oh ya, setelah folder cache terhapus saya coba cek kembali kecepatan I/O disk

root@proxy:/etc/apache2# dd if=/dev/zero of=iotest bs=64k count=16k conv=fdatasync && rm -rf iotest
16384+0 records in
16384+0 records out
1073741824 bytes (1,1 GB) copied, 11,0705 s, 97,0 MB/s

kecepatan I/O kembali normal, kemudian saya build ulang folder cache dari squid  dengan perintah

root@proxy:~# squid -z

cek folder cache

root@proxy:~# cd /cache-1
root@proxy:/cache-1# ls -l
total 132
drwxr-x--- 1 proxy proxy 1024 Jan 11 16:02 00
drwxr-x--- 1 proxy proxy 1024 Jan 11 16:02 01
drwxr-x--- 1 proxy proxy 1024 Jan 11 16:02 02
drwxr-x--- 1 proxy proxy 1024 Jan 11 16:02 03
drwxr-x--- 1 proxy proxy 1024 Jan 11 16:02 04
drwxr-x--- 1 proxy proxy 1024 Jan 11 16:02 05
drwxr-x--- 1 proxy proxy 1024 Jan 11 16:02 06
drwxr-x--- 1 proxy proxy 1024 Jan 11 16:02 07
drwxr-x--- 1 proxy proxy 1024 Jan 11 16:02 08
drwxr-x--- 1 proxy proxy 1024 Jan 11 16:02 09
drwxr-x--- 1 proxy proxy 1024 Jan 11 16:02 0A

kemudian saya coba jalan kan kembali squid dengan opsi mode debug

root@proxy:/cache-1# squid -dN1
root@proxy:/cache-1# 2016/01/11 16:05:51| Starting Squid Cache version LUSCA_HEAD-r14942 for i686-pc-linux-gnu...

kemudian saya coba cek kembali I/O harddisk untuk coba saya pantau

blg-7

alhamdulillah , kecepatan I/O masih normal , tetapi itu dalam keadaan squid belum menerima trafik dari client (redirect NAT di mikrotik belum saya aktifkan )

berikut perubahan setelah reirect NAT di mikrotik di aktifkan (squid menerima akses dari client)

root@proxy:/cache-1# dd if=/dev/zero of=iotest bs=64k count=16k conv=fdatasync && rm -rf iotest
16384+0 records in
16384+0 records out
1073741824 bytes (1,1 GB) copied, 12,7128 s, 84,5 MB/s

blg-8

alhamdulillah , masih wajar 🙂 …  yah bgitulah ternyata cache hardisk yang penuh sangat mempengaruhi kerja I/O dan berdampak pada load CPU yang tinggi , mudah-mudahan bermanfaat , dan mudah mudahan ada yang comment untuk memberikan cara yang lebih baik , unutk menangani cache squid yang penuh tanpa melakukan penghapusan cache object squid,

referensi:

http://www.records.asia/kenali-penyebab-load-vps-tinggi-menggunakan-top/

imple-aja.info/mengetahui-cpu-load-pada-vps-linux.html

 

 

No Comments, Be The First!

Your email address will not be published.

Time limit is exhausted. Please reload CAPTCHA.