NGINX Unit adalah server aplikasi ringan dan fleksibel yang dikembangkan oleh tim NGINX. Berbeda dengan NGINX tradisional yang berfungsi sebagai web server dan reverse proxy, NGINX Unit dirancang untuk menjalankan kode aplikasi secara langsung, mendukung berbagai bahasa pemrograman seperti PHP, Python, Go, JavaScript (Node.js), Java, Perl, Ruby, dan WebAssembly.
NGINX Unit pada dasarnya adalah sebuah runtime PHP seperti Roadrunner, FrakenPHP, Swoole, dan berbagai jenis runtime PHP lainnya. Untuk bisa memilih dari banyak jenis runtime bisa dilakukan perbandingan antara berbagai jenis runtime yang berbeda.
Untuk melakukan perbandingan antara berbagai jenis runtime maka digunakan indikator berupa rata-rata respons time (ms) dan rata-rata request per second, serta menggunakan indikator lain untuk melihat kemampuannya yaitu dengan concurrency 10, 100, dan 1000.
Pengujian dilakukan dengan environment berupa docker container yang dibatasi CPU 1 core dan RAM 1GB. Tujuan dari pembatasan ini adalah untuk menciptakan kondisi yang sama bagi setiap runtime sehingga hasil pengujian menjadi lebih adil dan mencerminkan performa relatif dari masing-masing runtime dalam kondisi sumber daya terbatas. Alat pengujian yang digunakan adalah K6, yang akan mengirimkan permintaan HTTP ke server dan menjalankan skrip pengujian yang ditentukan serta akan mencatat request per second dan respons time dari tiap-tipa runtime PHP.
Concurrency 10


Pada tingkat concurrency rendah, yaitu 10, NGINX Unit menunjukkan performa stabil dengan RPS yang lebih tinggi dibandingkan runtime PHP-FPM tradisional yang dijalankan bersama NGINX. NGINX Unit memproses lebih banyak permintaan per detik dan memberikan waktu respons rata-rata yang lebih cepat (lebih rendah dalam milidetik). Runtime lain seperti Swoole dan FrankenPHP juga berkinerja baik, tetapi Swoole biasanya membutuhkan pengaturan aplikasi yang lebih kompleks. Dibandingkan dengan PHP-FPM, waktu respons NGINX Unit lebih konsisten.
Concurrency 100


Ketika tingkat concurrency meningkat menjadi 100, NGINX Unit tetap mempertahankan performa yang kompetitif. Dalam pengujian, NGINX Unit menunjukkan kemampuan untuk menangani sejumlah besar permintaan dengan RPS yang signifikan dan waktu respons lebih rendah dibandingkan runtime berbasis PHP-FPM. Sementara itu, runtime seperti Swoole dan FrankenPHP mulai menunjukkan keunggulan performa yang lebih besar, terutama dalam RPS, karena desain mereka yang mendukung I/O asinkron secara lebih baik.
Concurrency 1000


Pada tingkat concurrency yang sangat tinggi, yaitu 1000, perbedaan performa semakin terlihat. NGINX Unit secara konsisten melayani lebih banyak permintaan per detik dibandingkan PHP-FPM, dengan waktu respons rata-rata yang tetap kompetitif meskipun beban kerja meningkat. Swoole, dengan pendekatan I/O non-blokirnya, mampu bersaing atau bahkan melampaui performa NGINX Unit pada tingkat concurrency ini. FrankenPHP, dengan optimisasi yang mirip, juga memberikan performa yang sangat baik. Sebaliknya, PHP-FPM mulai menunjukkan keterbatasan dalam menangani beban berat, dengan waktu respons yang meningkat secara signifikan dan throughput yang menurun.
Nginx Unit memberikan peningkatan signifikan dalam hal RPS dan waktu respons dibandingkan PHP-FPM, terutama pada tingkat concurrency yang tinggi. Namun, untuk performa maksimal pada concurrency 1000, runtime modern seperti Swoole dan FrankenPHP memiliki keunggulan tersendiri, meskipun membutuhkan penyesuaian tambahan pada aplikasi. Pilihan runtime terbaik tergantung pada kebutuhan aplikasi, tingkat concurrency yang diharapkan, serta kemudahan integrasi dan konfigurasi yang diinginkan.