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

create image slider using phyton in web

Tahukah kamu Algoritma Genetika dan Penerapannya dalam Industri

create animated futuristic profile card using html+css+js

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.

TOP 8 Framework Populer menggunakan bahasa .NET

Python Date and Time Manipulation

TOP 5 Trends Programming 2024

Daftar Kata Kunci (Keyword) dalam Bahasa Pemrograman Python