📑 Daftar Isi
- Backup Dulu, Baru Tweaking
- Struktur Dasar httpd_config.xml
- Root Settings: Identitas dan Proses Server
- Tuning Section: Jantung dari Tweaking
- keepAliveTimeout
- keepAliveMax
- maxConnections
- maxSSLConnections
- connTimeout
- maxReqPerConn
- socketIdleTimeout
- staticReqPerSec
- dynReqPerSec
- bandwidthPerSec
- maxMemoryUsage
- privilege
- memTransferBufSize
- compressibleContentTypes & enableBr
- Logging Settings: Akses Log dan Error Log
- Contoh Konfigurasi Optimized untuk VPS Menengah
- Troubleshooting: Saat Tweaking Tidak Berjalan Sesuai Harapan
- Pro Tips dari Lapangan
- Cara Apply Perubahan Tanpa Downtime
- Monitoring Setelah Tweaking
Setelah tweaking, jangan langsung meninggalkan server. Monitor minimal 1-2 jam untuk memastikan tidak ada anomali. Perhatikan:Response time — harus stabil atau lebih baik dari sebelumnya
Error rate — tidak boleh naik signifikan
Memory usage — pastikan tidak mendekati batas
Open connections — netstat -an | grep ESTABLISHED | wc -l
Error log — cek apakah ada error baru yang munculUntuk monitoring yang lebih serius, pertimbangkan pakai tools seperti Netdata, Grafana + Prometheus, atau bahkan simple setup dengan sarab + dstat. Yang penting kamu punya baseline dan bisa melihat perubahan trend.
Jika kamu mengelola VPS untuk klien, pertimbangkan juga panduan optimasi web server VPS untuk strategi tuning yang lebih luas di luar LiteSpeed.
Kesimpulan
Saya masih ingat pertama kali harus optimize server LiteSpeed buat client yang komplain website-nya lambat padahal spec VPS-nya udah lumayan gahar — 4 core, 8GB RAM, NVMe SSD. Semua terasa oke-oke aja di surface, tapi kok time-to-first-byte-nya nyampe 3 detik lebih. Setelah ngubek-ngubek config, ternyata masalahnya bukan di PHP-nya, bukan di MySQL-nya — tapi di file konfigurasi utama LiteSpeed yang masih pakai settingan default. Satu file: httpd_config.xml.
Kamu tahu nggak, file httpd_config.xml itu ibarat panel mesin mobil. Semua komponen penting ada di situ — dari seberapa banyak koneksi yang bisa ditampung, berapa lama koneksi boleh idling, sampai batas memorinya. Kalau kamu cuma pasang LiteSpeed tanpa pernah nyentuh file ini, itu sama aja beli mobil sport tapi nggak pernah setel suspensi dan gas-nya. Bisa jalan, tapi jauh dari optimal.
Banyak NOC engineer — bahkan yang udah berpengalaman — kadang nggak sadar betapa powerful-nya file ini. Mereka fokus ke tuning di level PHP (OPcache, pm.max_children) atau di level kernel (sysctl.conf), padahal konfigurasi LiteSpeed-nya sendiri masih default semua. Nah, di artikel ini kita bakal bedah satu per satu parameter di /usr/local/lsws/conf/httpd_config.xml, jelasin fungsi masing-masing, kapan harus diubah, dan value apa yang realistis buat server kamu.
Backup Dulu, Baru Tweaking
Sebelum kita mulai ngoprek, ini rule nomor satu yang nggak boleh dilanggar: backup dulu. Serius, saya pernah lihat engineer yang langsung edit config tanpa backup, salah set value, dan LiteSpeed-nya crash. Server client down 20 menit cuma gara-gara nggak mau rugi 10 detik buat backup.
cp /usr/local/lsws/conf/httpd_config.xml /usr/local/lsws/conf/httpd_config.xml.bak-$(date +%Y%m%d)
Setelah edit, kalau LiteSpeed nggak mau start, tinggal restore:
cp /usr/local/lsws/conf/httpd_config.xml.bak-20260727 /usr/local/lsws/conf/httpd_config.xml
/usr/local/lsws/bin/lswsctrl restart
Gampang kan? Kebiasaan backup ini yang membedakan engineer yang servernya jarang down sama engineer yang sering dapet urgent call tengah malam.
Struktur Dasar httpd_config.xml
Secara umum, file httpd_config.xml punya beberapa section utama yang penting untuk dipahami:
- Root settings — serverName, user, group, priority, CPUAffinity
- tuning — ini jantungnya, di sinilah mayoritas tweaking terjadi
- accessLog & errorLog — konfigurasi logging
- indexFiles & autoindex — penanganan index file
- mimeTypes — mapping tipe konten
Kita akan bahas masing-masing section secara mendalam, tapi fokus utama ada di bagian tuning karena di sanalah dampak tweaking paling terasa ke performa server.
Root Settings: Identitas dan Proses Server
serverName
Parameter ini menentukan nama identitas server yang ditampilkan di HTTP response header. Default-nya biasanya LiteSpeed. Dari sisi keamanan, ada baiknya kamu ganti ke value yang tidak identik dengan LiteSpeed — karena attacker bisa fingerprinting server kamu dari header ini.
<serverName>web-prod-01</serverName>
user & group
Menentukan di bawah user dan group mana LiteSpeed worker process berjalan. Pastikan user ini punya permission yang cukup untuk mengakses document root website, tapi jangan pakai root. Jika kamu pakai cPanel, biasanya sudah di-set ke nobody:nobody atau lsadm:lsadm. Kalau kamu pakai CloudLinux, pastikan CageFS-nya compatible dengan user ini.
priority
Menentukan Nice value untuk proses LiteSpeed. Value-nya range dari -20 (highest priority) sampai 19 (lowest priority). Default biasanya 0. Di shared hosting environment, kamu mungkin mau set ini ke angka positif (misal 5 atau 10) supaya LiteSpeed tidak mengambil resource dari service lain yang lebih kritis. Tapi kalau ini dedicated server dan LiteSpeed adalah service utama, set ke 0 atau bahkan negatif bisa membantu.
CPUAffinity
Menentukan CPU core mana yang bisa dipakai oleh proses utama LiteSpeed. Value 0 berarti tidak ada affinity restriction — proses bisa jalan di core mana saja. Kalau server kamu punya banyak core dan kamu mau reserve beberapa core untuk service lain (misal MySQL), kamu bisa set ini. Tapi untuk kebanyakan kasus, biarkan di 0 dan biarkan OS scheduler yang handle.
Tuning Section: Jantung dari Tweaking
Ini dia section yang paling krusial. Setiap parameter di sini langsung mempengaruhi bagaimana LiteSpeed menangani koneksi, memory, dan throughput. Mari kita bedah satu per satu.
keepAliveTimeout
Parameter ini menentukan berapa detik koneksi TCP akan tetap dipertahankan setelah request terakhir selesai. Default LiteSpeed biasanya 5 detik.
Fungsinya simpel: kalau browser kamu sedang load halaman yang punya banyak resource (gambar, CSS, JS), keep-alive memungkinkan semua resource di-load lewat satu koneksi TCP yang sama, tanpa harus buka-tutup koneksi berulang-ulang. Ini hemat overhead TLS handshake kalau pakai HTTPS.
Nah, di sinilah banyak engineer salah setel. Kalau keepAliveTimeout terlalu tinggi (misal 60 detik), koneksi idle tetap memakan resource — file descriptor, sedikit memory, dan slot koneksi. Kalau terlalu rendah (misal 1 detik), browser harus sering melakukan handshake ulang yang justru menambah latency.
| Scenario | Recommended Value | Alasan |
|---|---|---|
| Shared hosting / high traffic | 3-5 | Menghemat file descriptor dan memory per koneksi idle |
| VPS dengan traffic menengah | 5-10 | Balance antara performance dan resource usage |
| Dedicated, low traffic | 10-15 | Lebih banyak koneksi persistent, kurang overhead |
| API / WebSocket heavy | 30-60 | Koneksi perlu hidup lebih lama untuk long-polling |
<keepAliveTimeout>5</keepAliveTimeout>
keepAliveMax
Menentukan maksimal berapa banyak request yang boleh dikirim lewat satu koneksi keep-alive sebelum ditutup. Default biasanya 100.
Fungsi ini sebagai safety net — mencegah satu koneksi TCP memonopoli worker thread untuk waktu yang terlalu lama. Di kebanyakan skenario, 100 sudah cukup. Tapi kalau kamu mengalami masalah di mana satu client memakan terlalu banyak request (misal bot crawl), menurunkan value ini ke 50 bisa membantu distribute worker threads lebih merata.
Jangan set terlalu rendah (misal 5) karena browser modern biasanya memanggil banyak resource sekaligus — satu halaman WordPress bisa dengan mudah menghasilkan 30-50 HTTP request. Kalau keepAliveMax terlalu rendah, koneksi akan sering terputus dan browser harus membuka koneksi baru, yang menambah latency terutama di HTTPS.
maxConnections
Ini adalah salah satu parameter paling krusial. Menentukan maksimal jumlah koneksi simultan yang bisa diterima oleh LiteSpeed worker. Default biasanya 5000.
Penting untuk dipahami: ini bukan jumlah user, tapi jumlah koneksi TCP. Satu user browser bisa membuka 6-8 koneksi simultan (karena HTTP/2 dan parallel loading). Jadi maxConnections harus cukup besar untuk menampung peak concurrent users kamu, dikalikan factor 6-8.
Untuk menghitung value yang tepat, gunakan rumus sederhana ini:
maxConnections = (peak_concurrent_users × 6) + 20%
safety_margin
Contoh:
- Peak concurrent users: 200
- Perlu: 200 × 6 = 1200
- Dengan safety margin 20%: 1200 × 1.2 = 1440
- Bulatkan ke 1500
Tapi ingat — maxConnections juga bergantung pada file descriptor limit di OS. Kalau kamu set maxConnections = 5000 tapi ulimit -n hanya 1024, LiteSpeed tetap tidak bisa menerima lebih dari 1024 koneksi. Pastikan kamu juga set file descriptor limit yang sesuai di /etc/security/limits.conf.
maxSSLConnections
Sama seperti maxConnections, tapi khusus untuk koneksi SSL/TLS. Default biasanya 2000. Koneksi SSL lebih berat secara resource karena membutuhkan memory tambahan untuk SSL session. Di era HTTPS-andatory sekarang ini, sebagian besar traffic kamu pasti lewat SSL.
Rule of thumb: set maxSSLConnections minimal 80% dari maxConnections. Kalau semua traffic kamu HTTPS (yang mana sekarang memang standar), kamu bisa set keduanya ke value yang sama. Tapi kalau ada traffic HTTP plain juga, maxSSLConnections bisa sedikit lebih rendah.
Yang perlu diwaspadai adalah memory footprint-nya. Setiap koneksi SSL memakan sekitar 15-30KB RAM untuk buffer TLS. Jadi kalau maxSSLConnections kamu 5000, siap-siap alokasikan setidaknya 150MB RAM khusus untuk SSL buffers. Ini belum termasuk memory untuk serving konten.
connTimeout
Menentukan berapa detik LiteSpeed akan menunggu sebelum menutup koneksi yang tidak mengirim request apapun. Default biasanya 300 detik (5 menit).
Parameter ini berbeda dari keepAliveTimeout. KeepAliveTimeout mulai dihitung setelah request terakhir selesai. ConnTimeout mulai dihitung dari saat koneksi TCP pertama kali established — termasuk waktu sebelum request pertama dikirim. Ini sangat penting untuk mencegah slowloris attack, di mana attacker membuka banyak koneksi tapi tidak pernah mengirim request yang lengkap.
Untuk server dengan banyak traffic, 300 detik mungkin terlalu lama. Pertimbangkan untuk menurunkan ke 60–120 detik. Tapi jangan terlalu rendah (misal 10 detik) karena koneksi yang lambat dari client dengan jaringan buruk mungkin butuh waktu lebih lama untuk mengirim request pertama.
maxReqPerConn
Menentukan maksimal jumlah request yang boleh dikirim dalam satu koneksi TCP. Default biasanya 10000. Ini berbeda dari keepAliveMax — maxReqPerConn adalah batas hard di level TCP, sedangkan keepAliveMax adalah batas soft di level HTTP keep-alive.
Pada praktiknya, kamu hampir tidak pernah mengubah parameter ini. Value default 10000 sudah sangat besar. Parameter ini lebih relevan sebagai safety limit untuk mencegah abuse dari client yang melakukan pipelining request secara agresif.
socketIdleTimeout
Menentukan berapa detik socket yang sudah established tapi belum memulai HTTP communication akan ditutup. Default biasanya 300 detik. Parameter ini berbeda dari connTimeout karena fokus pada idle time setelah TCP handshake selesai tapi sebelum HTTP request pertama dikirim.
Di situasi production, value ini biasanya tidak perlu diubah dari default-nya. Tapi kalau kamu mengalami serangan seperti SYN flood atau connection exhaustion, menurunkan ini ke 30–60 detik bisa membantu mengurangi jumlah koneksi zombie yang memakan resource.
staticReqPerSec
Menentukan maksimal request per detik yang boleh dikirim untuk static resources (gambar, CSS, JS, font) per koneksi. Default 0 berarti unlimited.
Parameter ini sangat berguna kalau kamu mau mencegah satu client memonopoli bandwidth server untuk download file static. Di shared hosting, ini bisa jadi lifesaver — tanpa batas ini, satu user bisa menghabiskan seluruh bandwidth server cuma karena download file ZIP berukuran besar berulang kali.
Namun, kalau kamu menerapkan batasan ini, pastikan nilainya masih cukup tinggi untuk user normal. Satu halaman web modern bisa meminta 20-30 file static dalam hitungan detik, jadi set terlalu rendah akan membuat page load time memburuk. Value 50–100 biasanya aman untuk kebanyakan kasus. Set 0 jika kamu tidak ada masalah abuse.
dynReqPerSec
Sama konsepnya dengan staticReqPerSec, tapi untuk dynamic request (PHP, Python, CGI). Default 0 (unlimited). Ini lebih sensitif karena dynamic request memakan worker thread dan CPU time. Di shared hosting dengan CloudLinux, parameter ini sangat membantu mencegah satu account menghabiskan seluruh worker pool LiteSpeed.
Value yang umum: 20–50 per koneksi. Tapi kalau kamu pakai LiteSpeed dengan CloudLinux, kamu mungkin sudah punya limit per user lewat LVE. Dalam hal ini, biarkan di 0 dan serahkan ke CloudLinux yang handle.
bandwidthPerSec
Membatasi total bandwidth yang boleh digunakan per detik. Default 0 berarti unlimited. Ini bisa di-set di level server (httpd_config.xml) atau di level virtual host.
Untuk shared hosting, kamu mungkin mau set batasan per virtual host, bukan di level global. Tapi kalau kamu mengalami abuse yang mendadak dan butuh cepat throttle, set di level global bisa jadi quick fix sementara.
<bandwidthPerSec>0</bandwidthPerSec> <!-- unlimited -->
maxMemoryUsage
Menentukan persentase maksimal memory yang boleh digunakan oleh LiteSpeed. Default 0 berarti tidak ada batas. Kalau kamu set ke misal 80, LiteSpeed akan mulai menolak request baru ketika penggunaan memory melebihi 80% dari total RAM server.
Parameter ini penting banget untuk mencegah OOM (Out of Memory). Saya pernah handle kasus di mana LiteSpeed makan 95% RAM karena ada satu WordPress site yang pakai plugin berat dan concurrent visitors tinggi. Server akhirnya OOM dan semua service down — LiteSpeed, MySQL, bahkan SSH. Kalau maxMemoryUsage di-set ke 80, LiteSpeed akan reject request baru sebelum kehabisan memory dan minimal service lain masih bisa jalan.
privilege
Menentukan apakah LiteSpeed harus drop privileges setelah binding ke port. Default 1 berarti privilege dropping aktif — LiteSpeed bind ke port 80/443 sebagai root, lalu drop ke user biasa (nobody atau yang sudah di-set). Ini important dari sisi keamanan. Jangan pernah set ke 0 kecuali kamu tahu konsekuensinya.
memTransferBufSize
Menentukan ukuran buffer (dalam byte) untuk transfer data dari worker ke client. Default biasanya 4096 (4KB). Value yang lebih besar bisa meningkatkan throughput untuk large file transfer, tapi juga meningkatkan memory usage per koneksi.
Untuk kebanyakan kasus, default 4096 sudah cukup. Kalau server kamu banyak melayani download file besar (misal file sharing), kamu bisa naikkan ke 8192 atau 16384. Tapi untuk website biasa dengan konten kecil-kecil, perubahan ini tidak akan terasa signifikan.
compressibleContentTypes & enableBr
Menentukan tipe konten apa saja yang boleh di-compress oleh LiteSpeed. Default biasanya mencakup text/html, text/css, text/javascript, application/javascript, application/json, dan lain-lain. Pastikan kamu tidak memasukkan tipe konten yang sudah compressed (seperti image/jpeg, image/png, video/mp4) karena compress file yang sudah compressed hanya membuang CPU tanpa benefit apapun.
enableBr menentukan apakah Brotli compression aktif. Default 1 (aktif). Brotli umumnya memberikan compression ratio yang lebih baik dari gzip, terutama untuk HTML, CSS, dan JavaScript. Pastikan untuk tetap aktif, kecuali ada alasan spesifik (misal kompatibilitas dengan client sangat tua).
<compressibleContentTypes>text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml</compressibleContentTypes>
<enableBr>1</enableBr>
Logging Settings: Akses Log dan Error Log
accessLog
Menentukan lokasi dan format access log. Logging yang baik adalah kunci untuk troubleshooting. Jangan pernah disable access log di production — ini investasi untuk masa depan.
<accessLog>
<logs>/var/log/lsws/accesslog</logs>
<compactLog>0</compactLog>
</accessLog>
compactLog = 1 akan mengurangi ukuran log dengan menghilangkan beberapa field yang kurang penting. Di production server dengan traffic tinggi, ini bisa menghemat disk space signifikan. Tapi saat troubleshooting, compact log kadang kurang detail.
errorLog
Error log adalah best friend kamu saat ada masalah. Set logLevel ke NOTICE untuk production, atau DEBUG sementara saat troubleshooting.
<errorLog>
<logs>/var/log/lsws/errorlog</logs>
<logLevel>NOTICE</logLevel>
<debugLevel>0</debugLevel>
<rolloverSize>10M</rolloverSize>
<keepDays>30</keepDays>
</errorLog>
rolloverSize menentukan kapan log file akan di-rotate (default 10MB). keepDays menentukan berapa hari log lama disimpan sebelum dihapus. Untuk compliance tertentu, kamu mungkin perlu keep 90 hari atau lebih. Pastikan disk space kamu mencukupi.
Yang sering dilupakan: pastikan log rotation juga dikonfigurasi di crontab atau logrotate, bukan hanya di LiteSpeed. Kalau hanya mengandalkan rolloverSize LiteSpeed, kadang file log bisa membesar sebelum rotation terjadi.
Contoh Konfigurasi Optimized untuk VPS Menengah
Berikut contoh konfigurasi yang sudah di-tweak untuk VPS dengan spesifikasi 4 core, 8GB RAM, 100 concurrent users target, dan traffic campuran (static + PHP):
<?xml version="1.0" encoding="UTF-8"?>
<httpdConfig>
<serverName>web-prod-01</serverName>
<user>nobody</user>
<group>nogroup</group>
<priority>0</priority>
<CPUAffinity>0</CPUAffinity>
<autoStart>0</autoStart>
<tuning>
<keepAliveTimeout>5</keepAliveTimeout>
<keepAliveMax>100</keepAliveMax>
<maxConnections>1500</maxConnections>
<maxSSLConnections>1500</maxSSLConnections>
<connTimeout>120</connTimeout>
<maxReqPerConn>10000</maxReqPerConn>
<socketIdleTimeout>120</socketIdleTimeout>
<staticReqPerSec>0</staticReqPerSec>
<dynReqPerSec>0</dynReqPerSec>
<bandwidthPerSec>0</bandwidthPerSec>
<maxMemoryUsage>80</maxMemoryUsage>
<privilege>1</privilege>
<memTransferBufSize>4096</memTransferBufSize>
<compressibleContentTypes>text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml</compressibleContentTypes>
<enableBr>1</enableBr>
</tuning>
<accessLog>
<logs>/var/log/lsws/accesslog</logs>
<compactLog>0</compactLog>
</accessLog>
<errorLog>
<logs>/var/log/lsws/errorlog</logs>
<logLevel>NOTICE</logLevel>
<debugLevel>0</debugLevel>
<rolloverSize>10M</rolloverSize>
<keepDays>30</keepDays>
</errorLog>
</httpdConfig>
Troubleshooting: Saat Tweaking Tidak Berjalan Sesuai Harapan
Kadang setelah tweaking, performanya malah turun atau ada error baru. Ini beberapa masalah umum yang saya temui dan cara mengatasinya:
| Masalah | Kemungkinan Penyebab | Solusi |
|---|---|---|
| LiteSpeed tidak start setelah edit config | Syntax XML error atau value tidak valid | Jalankan xmllint --noout /usr/local/lsws/conf/httpd_config.xml untuk validasi syntax. Restore backup jika perlu. |
| Error “too many open files” | maxConnections lebih tinggi dari ulimit -n | Naikkan ulimit di /etc/security/limits.conf dan restart server. Atau turunkan maxConnections. |
| Server menggunakan terlalu banyak RAM | maxSSLConnections terlalu tinggi atau maxMemoryUsage tidak diset | Set maxMemoryUsage ke 80. Kurangi maxSSLConnections. Cek free -m untuk monitoring. |
| Website terasa lebih lambat setelah tweaking | keepAliveTimeout terlalu rendah atau maxConnections terlalu rendah | Naikkan keepAliveTimeout ke 5-10. Naikkan maxConnections secara bertahap. Monitoring response time. |
| 503 Service Temporarily Unavailable | maxConnections atau maxSSLConnections habis | Naikkan limit. Cek siapa yang memakan koneksi dengan netstat -an | grep :443 | wc -l |
| Worker process crash berulang | privilege di-set ke 0 atau ada permission issue | Pastikan privilege = 1. Cek error log di /var/log/lsws/errorlog untuk detail crash. |
Pro Tips dari Lapangan
Beberapa hal yang tidak tertulis di dokumentasi LiteSpeed tapi sangat penting dari pengalaman handle ratusan server:
- Tweak secara bertahap. Jangan ubah semua parameter sekaligus. Ubah satu atau dua parameter, monitor impact-nya selama 24-48 jam, baru lanjut ke parameter berikutnya. Kalau kamu ubah 10 parameter sekaligus dan performa memburuk, kamu tidak akan tahu parameter mana yang bermasalah.
- Monitor sebelum dan sesudah. Catat baseline performance metrics (response time, TTFB, concurrent connections) sebelum tweaking. Tanpa baseline, kamu tidak akan tahu apakah tweaking kamu berhasil atau tidak.
- Jangan lupa file descriptor limit. Saya sudah berkali-kali melihat engineer yang set maxConnections tinggi tapi lupa naikkan ulimit. Hasilnya? LiteSpeed tetap dibatasi oleh OS.
- Periksa juga httpd.conf (admin config). Selain httpd_config.xml, ada juga admin listener config yang bisa mempengaruhi performa. Pastikan admin port tidak berbenturan dengan production config.
- Gunakan LiteSpeed Load Tester. LiteSpeed menyediakan tools load testing gratis. Gunakan ini untuk benchmark sebelum dan sesudah tweaking alih-alih hanya mengandalkan perasaan.
Tambahan penting: kalau kamu pakai LiteSpeed dengan cPanel, pastikan kamu juga mengecek konfigurasi per-virtual host. Setting di httpd_config.xml adalah global default, tapi bisa di-override per virtual host di file vhconf.xml masing-masing. Untuk panduan lengkap tentang instalasi LiteSpeed di cPanel, kamu bisa baca di panduan install LiteSpeed di cPanel.
Dan kalau kamu ingin mengoptimalkan cache LiteSpeed untuk WordPress, jangan lupa baca juga panduan LiteSpeed Cache untuk WordPress karena ada hubungan langsung antara tuning httpd_config.xml dan cara LiteSpeed Cache berinteraksi dengan worker threads.
Cara Apply Perubahan Tanpa Downtime
Setelah kamu selesai edit httpd_config.xml, kamu perlu restart atau reload LiteSpeed. Ada dua opsi:
# Graceful restart (recommended) - tidak disconnect koneksi aktif
/usr/local/lsws/bin/lswsctrl graceful
# Full restart - disconnect semua koneksi
/usr/local/lsws/bin/lswsctrl restart
Gunakan graceful di production karena tidak akan memutus koneksi pengguna yang sedang aktif. Full restart hanya diperlukan kalau perubahan yang kamu lakukan sangat fundamental (misal mengubah user/group atau chroot settings).
Alternatif lain: kamu juga bisa reload dari LSWS WebAdmin Console di port 7080. Login ke https://server-ip:7080, klik “Graceful Restart” di menu. Tapi saya lebih suka pakai command line karena lebih cepat dan bisa di-automate lewat script.
Monitoring Setelah Tweaking
Setelah tweaking, jangan langsung meninggalkan server. Monitor minimal 1-2 jam untuk memastikan tidak ada anomali. Perhatikan:
- Response time — harus stabil atau lebih baik dari sebelumnya
- Error rate — tidak boleh naik signifikan
- Memory usage — pastikan tidak mendekati batas
- Open connections —
netstat -an | grep ESTABLISHED | wc -l - Error log — cek apakah ada error baru yang muncul
Untuk monitoring yang lebih serius, pertimbangkan pakai tools seperti Netdata, Grafana + Prometheus, atau bahkan simple setup dengan sarab + dstat. Yang penting kamu punya baseline dan bisa melihat perubahan trend.
Jika kamu mengelola VPS untuk klien, pertimbangkan juga panduan optimasi web server VPS untuk strategi tuning yang lebih luas di luar LiteSpeed.
Kesimpulan
File httpd_config.xml adalah tempat di mana kamu benar-benar bisa membuat LiteSpeed bekerja maksimal sesuai kebutuhan server kamu. Dari sekian banyak parameter, fokus utama seharusnya ada di maxConnections, maxSSLConnections, keepAliveTimeout, connTimeout, dan maxMemoryUsage — lima parameter ini saja sudah bisa memberikan improvement signifikan kalau di-set dengan benar.
Ingat, tidak ada value “satu ukuran untuk semua”. Setiap server punya karakteristik sendiri — mulai dari jumlah concurrent users, tipe konten, sampai spesifikasi hardware. Yang berhasil untuk server A belum tentu berhasil untuk server B. Makanya, benchmark dan monitoring adalah kunci.
Sekarang kamu punya pengetahuan lengkap tentang apa yang terjadi di balik layar LiteSpeed. Gunakan dengan bijak, dan jangan pernah lupa backup sebelum tweaking. Kalau ada pertanyaan atau pengalaman sendiri soal tweaking LiteSpeed, share di komentar — siapa tahu bisa membantu engineer lain yang sedang mengalami masalah serupa.
Q: Apakah saya perlu restart LiteSpeed setiap kali edit httpd_config.xml?
Ya, setiap perubahan di httpd_config.xml membutuhkan restart atau reload agar efektif. Gunakan /usr/local/lsws/bin/lswsctrl graceful untuk graceful restart yang tidak memutus koneksi aktif. Beberapa parameter bisa diubah dari WebAdmin Console tanpa restart manual, tapi untuk perubahan tuning yang signifikan, restart tetap dianjurkan.
Q: Bedanya maxConnections dan keepAliveMax?
maxConnections adalah batas maksimal koneksi TCP simultan yang diterima LiteSpeed secara keseluruhan. keepAliveMax adalah batas berapa banyak request HTTP yang boleh dikirim dalam satu koneksi keep-alive sebelum ditutup. maxConnections mengontrol total kapasitas server, keepAliveMax mengontrol berapa lama satu koneksi dipertahankan.
Q: Saya pakai LiteSpeed di shared hosting dengan cPanel, apakah saya bisa edit httpd_config.xml?
Biasanya tidak. Di shared hosting, akses ke httpd_config.xml dibatasi oleh administrator server. Yang bisa kamu tweaking adalah konfigurasi PHP dan .htaccess. Kalau kamu adalah server admin atau VPS owner, barulah kamu punya akses penuh ke file ini. Untuk panduan lengkap instalasi LiteSpeed dengan cPanel, baca artikel panduan install LiteSpeed di cPanel.
Q: Setelah tweaking, website malah lebih lambat. Kenapa?
Beberapa kemungkinan: (1) maxConnections terlalu rendah sehingga request ditolak, (2) keepAliveTimeout terlalu rendah sehingga koneksi sering terputus dan harus handshake ulang, (3) maxMemoryUsage terlalu rendah sehingga LiteSpeed mulai reject request sebelum waktunya. Cek error log LiteSpeed di /var/log/lsws/errorlog untuk clue. Restore backup jika perlu, lalu tweak secara bertahap dengan monitoring yang lebih ketat.