Optimasi LAMP Stack untuk CMS Gerakan 26 September Open Source So3ware (G26SOSS) -‐ kampus STTI I-‐Tech
ì
D a t a D i r i
Apa itu LAMP Stack? LAMP merupakan singkatan dari:
• • • •
Linux Apache MySQL PHP/Perl/Python
4 Elemen yang paling sering digunakan untuk membangun website sekarang ini.
The World Wide Web ì Web yang terkenal skr?
Teknologi yang mereka gunakan? Sumber : hOp://toolbar.netcra3.com/site_report/
ì
Apa itu Optimasi ? OpQmasi adalah suatu proses untuk mencapai hasil yang ideal atau dapat diarQkan sebagai suatu bentuk mengopQmalkan sesuatu hal yang sudah ada, ataupun merancang dan membuat sesusatu secara opQmal.
Memory Reduce runQme
Bandwidth
Agar website bisa ngebuuuuuuOt..
Kenapa Optimasi ?
Metrik Untuk mengetahui bahwa yang dilakukan sudah opQmal ataukah malah menjadi lebih buruk.
Gunakan METRIK
Dasar Optimasi Linux ì Yang perlu diketahui
• Aplikasi akan mengakses CPU, RAM, Disk Drive (min throughput 10-‐20 MB/s) dan Jaringan • Memiliki SSD dan > RAM akan mempercepat performance website –
MORE is ALWAYS BETTER! REALLY! • PasQkan VPS Qdak sharing resources
Dasar Optimasi Linux ì Yang perlu diketahui
• Linux Journaled akan menambahkan overhead pada disk write • Linux secara default akan merekam seQap File Access Stamps, ya.. SeQap satu berkas diakses maka Linux akan merekam waktu terakhir file diakses • Hindari RAID So3ware, System dan Server Logging
Dasar Mengukur Metrik
Sangat dianjurkan memahami beberapa pemahaman dasar mengenai system metrics (iostat, htop, ss, iptraf, tcpdump…) walaupun pada akhirnya anda akan membeli sebuah produk untuk memonitor sistem.
Dasar Mengukur Metrik Basis Tool: top
• % CPU = PID / USER pengguna CPU • % MEM = persentase pengguna memory • Sangat deQl J
ì
Dasar Mengukur Metrik Basis Tool
upQme, top, htop, mpstat, iostat, vmstat, free, ping, nicstat, dstat
ì
ì
Dasar Mengukur Metrik IntermediateTool
• • • • • • • • • •
sar netstat pidstat strace tcpdump blktrace iotop slabtop systcl /proc
Dasar Mengukur Metrik
ì
IntermediateTool : sysctl
System Seings:
Perilaku default kernel UNIX biasanya Qdak opQmal karena sulit untuk menganQsipasi jenis pekerjaan atau beban kerja yang akan diberikan kepada sistem operasi . Oleh karena itu, UNIX menyediakan parameter yang dapat mengubah alokasi sumber daya. Contoh: h"ps://www.shell-‐,ps.com/wp-‐content/uploads/sysctl-‐config.sh.txt
Linux Performance -‐ 1 ì Sumber: brendangregg.com
Brendangregg : hOp://www.brendangregg.com/linuxperf.html
Linux Performance -‐ 2 ì Sumber: brendangregg.com
Brendangregg : hOp://www.brendangregg.com/linuxperf.html
Linux Performance -‐ 3 ì Sumber: brendangregg.com
Brendangregg : hOp://www.brendangregg.com/linuxperf.html
Troubleshooting Workload Who Is causing the load? PID, UID, IP addr, .. Why is the load called? Code path What is the load? IOPS, tput, direcQon, type How is the load changing overQme
ì Ingat W3H
• • • •
Optimasi Linux Sederhana •
Gunakan Dedicate ‘hosQng’ dan jangan shared hosQng
•
Pilih server spek yang lumayan (bukan abal-‐abal)
•
Jika pengunjung bertambah, tambahkan CPU dan RAM.
•
Gunakan versi terakhir dari distro, banyak perbaikan dalam latest stable.
Dasar Optimasi Apache • Gunakan versi terakhir dari Apache untuk mendapatkan performance yang opQmal • Non-‐akQoan modul-‐modul yang Qdak dipakai • Gunakan MulQ-‐Processing Modules (MPM) yang sesuai • AkQoan Client-‐Side Caching • Untuk staQc contents seperQ CSS, JS, images akQoan mod_expires • AkQoan Etag untuk mempercepat response ke client
Dasar Optimasi Apache • ‘HostnameLookups Off’ – akan mempercepat response • Gunakan KeepAlive dan KeepAliveTimeout • AkQoan mod_deflate untuk HTTP Compression • Pisahkan staQc content dan dynamic • Menggunakan cookieless domain • Menggunakan CDN (CloudFlare, MaxCDN, etc.) • Reducing Network Load • Gunakan mod_gzip • Gunakan Disk caching (mod_disk_cache.c)
Berikut contoh akQvitas apache dengan mod_status – pada saat apache under aOack dan Qdak ada worker yang tersedia. Tip: PasQkan mod_status hanya bisa dilihat dari network/ip tertentu
Metrik Apache Mod_status
ì
Webalizer dan AWSTATs bisa menerjemahkan access_log dan error_log ke bentuk visual yang mudah dimengerQ. TOP dan HTOP untuk melihat RAM dan CPU Usage
Metrik Apache Monitoring Tool
ì
StartServers 2 MinSpareServers 3 MaxSpareServers 3 ServerLimit 30 MaxClients 30 MaxRequestsPerChild 1000
MinSpareServers • Virtual Private Server 5 • Dedicated server dengan 1-‐2GB RAM 10 • Dedicated server dengan 2-‐4GB RAM 20 • Dedicated server dengan GB RAM 25
MaxClients : (Total Memory – CriQcal Services Memory) / Size Per Apache process Misal : 21MB digunakan MySQL – Apache Thread 30 MB : MaxClients = (1002 – 21) / 30 karena itu nilai MaxClients = 32.7 MaxConnec3onsPerChild : (total amount of daily requests / total number of daily processes)
Optimasi Apache Worker Contoh menggunakan RAM 1 GB
ì
Optimasi Apache untuk CMS • AkQoan caching pada CMS, pada seQap rouQne, file atau apapun :) • AkQoan cache expiraQon pada seQap files diluar dari app CMS, seperQ gambar, css files, javascript files • AkQoan ETags untuk mempercepat response web server terhadap file diluar dari CMS, seperQ gambar, css files, javascript files
Optimasi MySQL Beberapa hal yang penQng dalam hal tuning MySQL • AkQoan MySQL Query Cache dan Berikan Memory yang cukup • Index Slow Query dengan fitur: • AkQoan Slow Query Log • Gunakan fungsi EXPLAIN untuk mendapatkan informasi dari Query • PasQkan menerapkan Index pada query yang sering digunakan • Beberapa hal lain yang perlu diperhaQkan: • InnoDB buffer pool • Key_buffer, sangat penQng untuk temp tables
Optimasi PHP ingat:
• PHP merupakan ScripQng Language, seQap eksekusi akan dilakukan kompilasi pada script tersebut. • PHP berjalan dalam Apache, seQap kali apache menjalankan thread maka akan dialokasikan memory untuk PHP. • Semakin banyak kode yang digunakan dalam sebuah berkas, maka akan memperlambat loading. • PasQkan membatasi penggunaan memory di php.ini • Gunakan OpCode Cache
PHP Opcode Cache Opcode Cache secara dinamis akan menyimpan seQap PHP code ke dalam binari sehingga dapat digunakan pada eksekusi selanjutnya tanpa harus di compile kembali. Beberapa perkakas Opcode: • Zend Opcode • APC • Xcache • eAccelerator • PHP Encode
Web Speed Tester Berikut ini adalah website yang bisa digunakan untuk mengetes kecepatan website: • Pingdom: hOp://tools.pingdom.com/fpt/ • GTMetrix : hOp://gtmetrix.com/ • Google PageSpeed : hOps://developers.google.com/ speed/pagespeed/ • WebPageTest: hOp://www.webpagetest.org/
Contoh Analisa Website
Pengetesan dengan website hOp://tools.pingdom.com/fpt/ -‐ beberapa hal yang harus diperbaiki untuk mendapatkan performance yang lebih baik.
Contoh Analisa Website
Informasi Hosting • GraQs (Wordpress.com, + Ads) • Shared HosQng $ • Virtual Private Server (VPS) $$ • Dedicated Server $$$ • Managed HosQng $$
Shared Hosting Satu Server digunakan secara bersama-‐sama. Contoh: GoDaddy, 1&1, BlueHost, HostGator dll
VPS Hosting 10 – 50 websites per server Shared physical server resources, but runs in its environment. You may be responsible for system upgrades & maintenance
Dedicated Hosting All your resource are belong to you! You are responsible for system upgrades & maintenance Run as many sites as you want J
Managed Hosting Server Upgrades & Maintenance handled by hosQng company Server are opQmized !!
Terima Kasih
Mahfudh, S.Kom, M.Eng CCNA, RHCT, CEH CerQfied HP: 0813-‐608-‐222-‐79 Email: info@alifia.co.id FB: mahfudh.aceh TwiOer:avudz