لینکس io_uring سب سسٹم کا استعمال کرتے ہوئے hinsightd HTTP سرور متعارف کرایا

ایک کمپیکٹ HTTP سرور، hinsightd، شائع کیا گیا ہے، جو لینکس کرنل میں فراہم کردہ io_uring غیر مطابقت پذیر I/O انٹرفیس کے استعمال کے لیے قابل ذکر ہے۔ سرور HTTP/1.1 پروٹوکول کو سپورٹ کرتا ہے اور طلب میں فعالیت فراہم کرتے ہوئے وسائل کے کم استعمال کے لیے ڈیزائن کیا گیا ہے۔ مثال کے طور پر، hinsightd TLS، ریورس پراکسینگ (rproxy)، مقامی فائل سسٹم میں متحرک طور پر تیار کردہ مواد کو کیش کرنے، منتقل شدہ ڈیٹا کی فلائی کمپریشن، قائم کنکشن کو توڑے بغیر دوبارہ شروع کرنے، FastCGI اور CGI میکانزم کا استعمال کرتے ہوئے متحرک درخواست ہینڈلرز کو جوڑنے کی حمایت کرتا ہے۔ پروجیکٹ کوڈ C میں لکھا گیا ہے اور BSD لائسنس کے تحت تقسیم کیا گیا ہے۔

کنفیگریشن کو پروسیس کرنے، ایڈز لکھنے اور درخواست ہینڈلرز بنانے کے لیے، Lua زبان کا استعمال ممکن ہے، اور ایسے ہینڈلرز کو براہ راست سرور کنفیگریشن فائل میں بیان کیا جا سکتا ہے۔ پلگ انز کی شکل میں، لاگ ریکارڈنگ فارمیٹ کو تبدیل کرنا، انفرادی لاگز کو ورچوئل ہوسٹس سے جوڑنا، لوڈ بیلنسنگ حکمت عملی کی وضاحت، HTTP تصدیق، یو آر ایل کو دوبارہ لکھنا اور طے شدہ کام کو انجام دینا (مثال کے طور پر، Let's Encrypt سرٹیفکیٹس کو اپ ڈیٹ کرنا) لاگو کیا جاتا ہے۔

سرور آپ کی ایپلی کیشنز میں بصیرت کی فعالیت کو ضم کرنے کے لیے لائبریری کے ساتھ آتا ہے۔ Hinsightd میں کمانڈ لائن سے HTTP درخواستیں بھیجنے کے لیے مربوط فعالیت بھی شامل ہے، مثال کے طور پر، آپ صفحہ لوڈ کرنے کے لیے "hinsightd -d URL" کمانڈ چلا سکتے ہیں۔ سرور بہت کمپیکٹ ہے اور مرتب شدہ شکل میں تقریباً 200KB لیتا ہے (100KB قابل عمل فائل اور 100KB مشترکہ لائبریری)۔ بیرونی انحصار میں صرف libc، lua، liburing اور zlib، اور اختیاری طور پر openssl/libressl اور ffcall شامل ہیں۔

مزید ترقی کے منصوبوں میں کمپریسڈ فائلوں کو کیش کرنے کی صلاحیت، فلٹرنگ سسٹم کالز کی بنیاد پر سینڈ باکس آئسولیشن اور نیم اسپیس کا استعمال، ٹریفک کی تشکیل، ملٹی تھریڈنگ، بہتر ایرر ہینڈلنگ اور ماسک پر مبنی ورچوئل ہوسٹ کا پتہ لگانا شامل ہیں۔

250 اور 500 (قوسین میں) متوازی درخواستوں ("ab -k -c 250 -n 10000 http://localhost/") کو چلانے پر ab یوٹیلیٹی کے ساتھ مصنوعی کارکردگی کی جانچ کے نتائج (کنفیگریشن میں اصلاح کے بغیر):

  • hinsightd/0.9.17 - 63035.01 درخواستیں فی سیکنڈ (54984.63)
  • lighttpd/1.4.67 - 53693.29 درخواستیں فی سیکنڈ (1613.59)
  • Apache/2.4.54 - 37474.10 درخواستیں فی سیکنڈ (34305.55)
  • Caddy/2.6.2 - 35412.02 درخواستیں فی سیکنڈ (33995.57)
  • nginx/1.23.2 - 26673.64 درخواستیں فی سیکنڈ (26172.73)

ماخذ: opennet.ru

نیا تبصرہ شامل کریں