contoh troublehooting dan konfigurasi server network untuk optimalisasi performance

 contoh langkah troubleshooting dan konfigurasi server jaringan untuk mengoptimalkan performa:


Studi Kasus

Masalah:
Server yang digunakan sebagai gateway dan pengelola aplikasi mengalami kinerja lambat, terutama saat menangani banyak koneksi dari pengguna. Beberapa gejala yang teridentifikasi:

  1. Latensi tinggi saat mengakses layanan.
  2. Penggunaan CPU pada server sering mencapai 100%.
  3. Drop koneksi pada jam sibuk.

Langkah Troubleshooting

1. Analisis Penggunaan Sumber Daya

  • CPU dan Memori: Gunakan perintah berikut untuk memeriksa penggunaan CPU dan memori:

    bash
    ---------------------------------------
    top htop # Jika tersedia, lebih interaktif

    Cari proses dengan penggunaan CPU atau memori yang tinggi.

  • Disk I/O: Gunakan iostat untuk melihat apakah server mengalami bottleneck pada disk:

    bash
    --------------------------------------------------------------
    iostat -x 1 5
  • Jaringan: Gunakan nload atau iftop untuk memantau lalu lintas jaringan:

    bash
    -------------------------------
    iftop -i eth0

2. Periksa Konfigurasi Jaringan

  • Bandwidth: Lakukan tes bandwidth menggunakan alat seperti iperf:

    bash
    -----------------------------------
    iperf -s # Pada server iperf -c <IP_SERVER> # Pada client
  • MTU Size: Periksa apakah Maximum Transmission Unit (MTU) terlalu kecil/besar:

    bash
    -------------------------
    ifconfig eth0 | grep MTU

    Nilai default biasanya 1500. Sesuaikan sesuai kebutuhan.

  • Koneksi TCP: Periksa apakah ada banyak koneksi TIME_WAIT yang tidak dibersihkan:

    bash
    ----------------------------
    netstat -an | grep TIME_WAIT

3. Periksa Log Server

Cek log untuk mengetahui error atau bottleneck spesifik:

bash
----------------------------------------------------------
tail -f /var/log/syslog tail -f /var/log/nginx/error.log # Jika menggunakan NGINX

Langkah Optimalisasi

1. Optimalkan Kernel TCP/IP

Edit file sysctl.conf untuk mengoptimalkan pengaturan jaringan:

bash
---------------------------
sudo nano /etc/sysctl.conf

Tambahkan atau ubah parameter berikut:

bash
-----------------------------------
# Meningkatkan backlog koneksi net.core.somaxconn = 1024 # Memperbesar buffer untuk TCP net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 # Mengurangi TIME_WAIT untuk koneksi TCP net.ipv4.tcp_fin_timeout = 15 # Aktifkan reuse pada TIME_WAIT net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 # Tingkatkan jumlah file descriptor fs.file-max = 2097152 # Maksimalkan koneksi simultan net.ipv4.ip_local_port_range = 1024 65000 # Meningkatkan jumlah koneksi net.ipv4.tcp_max_syn_backlog = 4096

Simpan file, lalu terapkan konfigurasi:

bash
-------------------------
sudo sysctl -p

2. Konfigurasi Layanan (NGINX/Apache)

a. Untuk NGINX

Edit file konfigurasi di /etc/nginx/nginx.conf:

nginx
------------------------------------------------------
worker_processes auto; # Gunakan semua core CPU worker_connections 4096; # Tingkatkan koneksi maksimum events { use epoll; # Gunakan model I/O yang efisien worker_connections 4096; } http { sendfile on; # Mengoptimalkan pengiriman file tcp_nopush on; tcp_nodelay on; keepalive_timeout 15; client_max_body_size 10M; }

Restart NGINX:

bash
---------------------------------
sudo systemctl restart nginx

b. Untuk Apache

Edit file konfigurasi Apache di /etc/httpd/conf/httpd.conf atau /etc/apache2/apache2.conf:

apache
---------------------------------
<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 250 MaxConnectionsPerChild 1000 </IfModule>

Restart Apache:

bash
-------------------------------
sudo systemctl restart apache2

3. Cache dan Kompresi

  • Aktifkan cache di server (NGINX/Apache) untuk konten statis.
  • Gunakan kompresi Gzip untuk mengurangi ukuran data yang ditransfer:
    • NGINX:
      nginx
      ----------------------------
      gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    • Apache: Tambahkan modul mod_deflate untuk mengaktifkan kompresi.

4. Optimalkan Database

Jika server juga menjalankan database:

  • Indeks Query: Pastikan query sering digunakan memiliki indeks.
  • Konfigurasi MySQL (contoh di my.cnf):
    ini
    --------------------------
    [mysqld] max_connections = 500 query_cache_size = 64M innodb_buffer_pool_size = 1G
    Restart MySQL:
    bash
    ----------------------------
    sudo systemctl restart mysql

5. Pemantauan dan Logging

Gunakan alat pemantauan performa seperti:

  • Prometheus + Grafana: Untuk pemantauan metrik real-time.
  • ELK Stack (Elasticsearch, Logstash, Kibana): Untuk analisis log.

Dengan langkah-langkah ini, server dapat dioptimalkan untuk menangani lebih banyak koneksi dengan latensi yang lebih rendah.

Comments

Popular posts from this blog

CRUD SPRING REACTIVE WEBFLUX +Mongo DB

Top 7 Digital Transformation Companies

100 perusahaan perangkat lunak (software) populer dari Eropa dan Amerika yang memiliki kehadiran atau operasional di Indonesia.

Regression Testing dalam UAT Environment?

TOP 8 Framework Populer menggunakan bahasa .NET

Python Date and Time Manipulation

Daftar Kata Kunci (Keyword) dalam Bahasa Pemrograman Python

TOP 5 Trends Programming 2024

20 Data Center Terbesar di Dunia

Tahukah Kamu bagaimana algoritma social media facebook dan instagram bekerja ?