Memperkenalkan server HTTP ke belakang menggunakan subsistem Linux io_uring

Server HTTP ke belakang yang ringkas telah diterbitkan, terkenal karena menggunakan antarmuka I/O asinkron io_uring yang disediakan di kernel Linux. Server mendukung protokol HTTP/1.1 dan dirancang untuk konsumsi sumber daya yang rendah sekaligus menyediakan fungsionalitas yang sangat dibutuhkan. Misalnya, hinsightd mendukung TLS, reverse proxy (rproxy), caching konten yang dihasilkan secara dinamis dalam sistem file lokal, kompresi data on-the-fly, restart tanpa koneksi, koneksi penangan permintaan dinamis menggunakan mekanisme FastCGI dan CGI. Kode proyek ditulis dalam bahasa C dan didistribusikan di bawah lisensi BSD.

Untuk memproses konfigurasi, menulis tambahan dan membuat penangan permintaan, kemampuan untuk menggunakan bahasa Lua disediakan, sedangkan penangan tersebut dapat didefinisikan secara langsung dalam file konfigurasi server. Dalam bentuk plugin, fitur seperti mengubah format logging, menautkan log individu ke host virtual, menentukan strategi penyeimbangan muatan, otentikasi HTTP, penulisan ulang URL, dan pekerjaan terjadwal terjadwal (misalnya, memperbarui sertifikat Let's Encrypt) diimplementasikan di berupa plugin.

Server dilengkapi dengan perpustakaan untuk mengintegrasikan fungsionalitas ke belakang ke dalam aplikasi Anda. Hinsightd juga menyertakan fungsionalitas terintegrasi untuk mengirim permintaan HTTP dari baris perintah, misalnya, untuk memuat halaman, Anda dapat menjalankan "hinsightd -d URL". Servernya sangat kompak dan membutuhkan sekitar 200KB yang dikompilasi (100KB dapat dieksekusi dan 100KB pustaka bersama). Ketergantungan eksternal hanya mencakup libc, lua, liburing dan zlib, dan secara opsional openssl/libressl dan ffcall.

Rencana untuk pengembangan lebih lanjut mencakup kemampuan untuk menyimpan file terkompresi dalam cache, isolasi kotak pasir berdasarkan pemfilteran panggilan sistem dan penggunaan ruang nama, manajemen bandwidth (pembentukan lalu lintas), multithreading, penanganan kesalahan yang lebih baik, dan definisi host virtual berdasarkan topeng.

Hasil pengujian kinerja sintetik (tanpa pengoptimalan dalam konfigurasi sebagaimana adanya) oleh utilitas ab saat menjalankan 250 dan 500 (dalam tanda kurung) permintaan paralel ("ab -k -c 250 -n 10000 http://localhost/"):

  • pandangan ke belakang/0.9.17 - 63035.01 permintaan per detik (54984.63)
  • lighttpd/1.4.67 - 53693.29 permintaan per detik (1613.59)
  • Apache/2.4.54 - 37474.10 permintaan per detik (34305.55)
  • Caddy/2.6.2 - 35412.02 permintaan per detik (33995.57)
  • nginx/1.23.2 - 26673.64 permintaan per detik (26172.73)

Sumber: opennet.ru

Tambah komentar