Warning: Undefined variable $reporternya in /var/www/saksenengku/wp-content/themes/Newspaper/functions.php on line 230
30.2 C
Jakarta
Minggu, 13 Oktober 2024

Benchmark Tengine vs Nginx

Apa itu Tengine?

Tengine adalah server web yang berasal dari Taobao, situs web e-commerce terbesar di Asia. Ini didasarkan pada server HTTP Nginx dan memiliki banyak fitur lanjutan. Tengine telah terbukti sangat stabil dan efisien di beberapa dari 100 situs web teratas di dunia, termasuk taobao.com dan tmall.com.

Tengine telah menjadi proyek open source sejak Desember 2011. Saat ini sedang dikembangkan secara aktif oleh tim Tengine, yang anggota intinya berasal dari Taobao, Sogou dan perusahaan Internet lainnya. Tengine adalah usaha masyarakat dan setiap orang didorong untuk terlibat.

Keistimewaan Tengine dari Web server lain

Baca Juga:  Security Tips: Linux Server Hardening

Telah menerapkan dukungan SO_REUSEPORT [1] di Tengine.
Untuk melihat peningkatan kinerja, Tengine melakukan patokan yang sangat sederhana dengan empat Linux boxes. Tiga kotak digunakan sebagai klien, dan yang lainnya
satu sebagai server web dengan Tengine listening di port 81 dan Nginx listening di port 82. Serta semua perangkat kerasnya
Spesifikasi untuk Linux boxes semua sama.

Menjalankan tiga uji kasus dengan concurrency dari 100 sampai 1000. test cases adalah:

  • Tengine with SO_REUSEPORT enabled (reuse_port on).
  • Nginx with accept lock (accept_mutex on).
  • Nginx without accept lock (accept_mutex off).

The benchmark software menggunakan ApacheBench. Berikut contoh command line:

ab -r -n 10000000 -c 100 http://ip:81/empty.gif

Hardware & Software

CPU: Intel(R)Xeon(R)E5-2650v2@2.60GHz 32core
Memory: 128GB
NIC: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection

Kernel: Linux-3.17.2.x86_64
Tengine-2.1.0
Nginx-1.6.2
ApacheBench-2.3

System konfigurasi

net.ipv4.tcp_mem = 3097431 4129911 6194862
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.tcp_wmem = 4096 65536 4194304
net.ipv4.tcp_max_tw_buckets = 262144
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse  = 1
net.ipv4.tcp_syncookies  = 1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.core.somaxconn  = 65535
net.core.netdev_max_backlog  = 200000
Limit                 Soft Limit          Hard Limit            Units
Max open  files         65535               65535               files

Web server konfigurasi

Nginx konfigurasi file:

worker_processes auto;
worker_cpu_affinity
00000000000000000000000000000001
00000000000000000000000000000010
00000000000000000000000000000100
00000000000000000000000000001000
00000000000000000000000000010000
00000000000000000000000000100000
00000000000000000000000001000000
00000000000000000000000010000000
00000000000000000000000100000000
00000000000000000000001000000000
00000000000000000000010000000000
00000000000000000000100000000000
00000000000000000001000000000000
00000000000000000010000000000000
00000000000000000100000000000000
00000000000000001000000000000000
00000000000000010000000000000000
00000000000000100000000000000000
00000000000001000000000000000000
00000000000010000000000000000000
00000000000100000000000000000000
00000000001000000000000000000000
00000000010000000000000000000000
00000000100000000000000000000000
00000001000000000000000000000000
00000010000000000000000000000000
00000100000000000000000000000000
00001000000000000000000000000000
00010000000000000000000000000000
00100000000000000000000000000000
01000000000000000000000000000000
10000000000000000000000000000000
;
worker_rlimit_nofile 65535;

events {
  worker_connections 65535;
  accept_mutex off;
}

http {
  include mime.types;
  default_type application/octet-stream;
  access_log logs/access.log;
  keepalive_timeout 0;
  server {
    listen 82 backlog=65535;
    server_name localhost;
    location = /empty.gif {
      empty_gif;
    }
  }
}

Tengine konfigurasi file:

worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 65535;

events {
  worker_connections 65535;
  reuse_port on;
}

http {
  include mime.types;
  default_type application/octet-stream;
  access_log logs/access.log;
  keepalive_timeout 0;
  server {
    listen 81 backlog=65535;
    server_name localhost;
    location = /empty.gif {
      empty_gif;
    }
  }
}

Seperti yang bisa Anda lihat, file konfigurasi Tengine dan Nginx umumnya sama kecuali ‘reuse_port’,
arahan ‘worker_cpu_affinity’, dan ‘accept_mutex’. Perhatikan juga itu
lebih mudah untuk mengatur afinitas CPU di Tengine karena mendukung ‘worker_cpu_affinity auto’.

Baca Juga:  Fitur dan Perbaikan Bug yang Harus Diperhatikan, Apa yang Baru di Debian 12.1?

Kesimpulan

  1. Tengine memiliki peningkatan kinerja 200% lebih cepat dibandingkan dengan Nginx dengan accept lock, yang merupakan setingan awal.
  2. Tengine mengalami peningkatan kinerja sebesar 60% dibandingkan dengan Nginx tanpa accept lock.

[1] The SO_REUSEPORT socket option: https://lwn.net/Articles/542629/

Sumber: http://tengine.taobao.org/document/benchmark.html

Apa itu Tengine?

Tengine adalah server web yang berasal dari Taobao, situs web e-commerce terbesar di Asia. Ini didasarkan pada server HTTP Nginx dan memiliki banyak fitur lanjutan. Tengine telah terbukti sangat stabil dan efisien di beberapa dari 100 situs web teratas di dunia, termasuk taobao.com dan tmall.com.

Tengine telah menjadi proyek open source sejak Desember 2011. Saat ini sedang dikembangkan secara aktif oleh tim Tengine, yang anggota intinya berasal dari Taobao, Sogou dan perusahaan Internet lainnya. Tengine adalah usaha masyarakat dan setiap orang didorong untuk terlibat.

Keistimewaan Tengine dari Web server lain

Baca Juga:  Membuat Replikasi Master to Master di MySQL

Telah menerapkan dukungan SO_REUSEPORT [1] di Tengine.
Untuk melihat peningkatan kinerja, Tengine melakukan patokan yang sangat sederhana dengan empat Linux boxes. Tiga kotak digunakan sebagai klien, dan yang lainnya
satu sebagai server web dengan Tengine listening di port 81 dan Nginx listening di port 82. Serta semua perangkat kerasnya
Spesifikasi untuk Linux boxes semua sama.

Menjalankan tiga uji kasus dengan concurrency dari 100 sampai 1000. test cases adalah:

  • Tengine with SO_REUSEPORT enabled (reuse_port on).
  • Nginx with accept lock (accept_mutex on).
  • Nginx without accept lock (accept_mutex off).

The benchmark software menggunakan ApacheBench. Berikut contoh command line:

ab -r -n 10000000 -c 100 http://ip:81/empty.gif

Hardware & Software

CPU: Intel(R)Xeon(R)E5-2650v2@2.60GHz 32core
Memory: 128GB
NIC: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection

Kernel: Linux-3.17.2.x86_64
Tengine-2.1.0
Nginx-1.6.2
ApacheBench-2.3

System konfigurasi

net.ipv4.tcp_mem = 3097431 4129911 6194862
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.tcp_wmem = 4096 65536 4194304
net.ipv4.tcp_max_tw_buckets = 262144
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse  = 1
net.ipv4.tcp_syncookies  = 1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.core.somaxconn  = 65535
net.core.netdev_max_backlog  = 200000
Limit                 Soft Limit          Hard Limit            Units
Max open  files         65535               65535               files

Web server konfigurasi

Nginx konfigurasi file:

worker_processes auto;
worker_cpu_affinity
00000000000000000000000000000001
00000000000000000000000000000010
00000000000000000000000000000100
00000000000000000000000000001000
00000000000000000000000000010000
00000000000000000000000000100000
00000000000000000000000001000000
00000000000000000000000010000000
00000000000000000000000100000000
00000000000000000000001000000000
00000000000000000000010000000000
00000000000000000000100000000000
00000000000000000001000000000000
00000000000000000010000000000000
00000000000000000100000000000000
00000000000000001000000000000000
00000000000000010000000000000000
00000000000000100000000000000000
00000000000001000000000000000000
00000000000010000000000000000000
00000000000100000000000000000000
00000000001000000000000000000000
00000000010000000000000000000000
00000000100000000000000000000000
00000001000000000000000000000000
00000010000000000000000000000000
00000100000000000000000000000000
00001000000000000000000000000000
00010000000000000000000000000000
00100000000000000000000000000000
01000000000000000000000000000000
10000000000000000000000000000000
;
worker_rlimit_nofile 65535;

events {
  worker_connections 65535;
  accept_mutex off;
}

http {
  include mime.types;
  default_type application/octet-stream;
  access_log logs/access.log;
  keepalive_timeout 0;
  server {
    listen 82 backlog=65535;
    server_name localhost;
    location = /empty.gif {
      empty_gif;
    }
  }
}

Tengine konfigurasi file:

worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 65535;

events {
  worker_connections 65535;
  reuse_port on;
}

http {
  include mime.types;
  default_type application/octet-stream;
  access_log logs/access.log;
  keepalive_timeout 0;
  server {
    listen 81 backlog=65535;
    server_name localhost;
    location = /empty.gif {
      empty_gif;
    }
  }
}

Seperti yang bisa Anda lihat, file konfigurasi Tengine dan Nginx umumnya sama kecuali ‘reuse_port’,
arahan ‘worker_cpu_affinity’, dan ‘accept_mutex’. Perhatikan juga itu
lebih mudah untuk mengatur afinitas CPU di Tengine karena mendukung ‘worker_cpu_affinity auto’.

Baca Juga:  Free SSL untuk Rails dan Nginx menggunakan Let's Encrypt

Kesimpulan

  1. Tengine memiliki peningkatan kinerja 200% lebih cepat dibandingkan dengan Nginx dengan accept lock, yang merupakan setingan awal.
  2. Tengine mengalami peningkatan kinerja sebesar 60% dibandingkan dengan Nginx tanpa accept lock.

[1] The SO_REUSEPORT socket option: https://lwn.net/Articles/542629/

Sumber: http://tengine.taobao.org/document/benchmark.html

Untuk mendapatkan Berita & Review menarik Saksenengku Network
Google News

Artikel Terkait

Populer

Artikel Terbaru