স্ট্যাটিক ফাইলগুলি পরিবেশন করার জন্য নোড.জেস নিজেই বা এনগিনেক্সের সম্মুখভাগ?


91

দ্রুততর কোন মানদণ্ড বা তুলনা আছে: নোডের সামনে এনগিনেক্স রাখুন এবং এটি সরাসরি স্ট্যাটিক ফাইলগুলি পরিবেশন করতে দেয় বা কেবল নোড ব্যবহার করে এবং এটি ব্যবহার করে স্ট্যাটিক ফাইলগুলি পরিবেশন করতে পারে?

এনজিনেক্স সলিউশনটি আমার পক্ষে আরও পরিচালিত বলে মনে হচ্ছে, কোন চিন্তাভাবনা?


4
আমি বলব এটি অন্য সার্ভারটি ব্যবহার করার জন্য আপনাকে যে পরিমাণ কনফিগারেশন এবং কোড লিখতে হবে তা নির্ভর করে। আপনি যদি আইপিওতে যাওয়ার আশা না করেন এবং আপনার অ্যাপ্লিকেশন সার্ভারটি ইতিমধ্যে কনফিগার করা হয়েছে এবং আপনার প্রয়োজনীয় সমস্ত কিছু করা হচ্ছে, তবে এটি পর্যাপ্ত না হওয়া পর্যন্ত আপনি কেবল এটির সাথেই থাকতে পারেন।
m33lky

উত্তর:


120

আমাকে এখানে উত্তরগুলির সাথে একমত হতে হবে। নোড সূক্ষ্ম কাজটি করবেন, সঠিকভাবে কনফিগার করার সময় nginx অবশ্যই স্পষ্টভাবে দ্রুত হবে। একটি ক্ষুদ্র মেমরির পদক্ষেপ সহ একটি অনুরূপ প্যাটার্ন (কেবলমাত্র যখন সংযোগে ফিরে আসবে) অনুসরণ করে এনজিনেক্স দক্ষতার সাথে সি প্রয়োগ করা হয়। তদুপরি, এটি সেই ফাইলগুলি পরিবেশন করার জন্য সেন্ডফিল সিস্কেলকে সমর্থন করে যা আপনি সম্ভবত ফাইলগুলি পরিবেশন করতে পারেন যত দ্রুত সম্ভব, যেহেতু এটি ওএস কার্নেল নিজেই কাজ করছে।

এখন অবধি সার্ভার হিসাবে এনগিনেক্স ডি ফ্যাক্টো স্ট্যান্ডার্ডে পরিণত হয়েছে। আপনি এটি স্ট্যাটিক ফাইল, জিজিপ, এসএসএল এবং এমনকি পরে লোড-ব্যালেন্সিংয়ের পরিবেশনার জন্য ব্যবহার করতে পারেন।

পিএস: এটি অনুমান করে যে অনুরোধের সময় ফাইলগুলি ডিস্কে বিশ্রামে থাকা হিসাবে "সত্যই" স্থিতিশীল।


7
কেবল একটি ছোট্ট নোট: নোড.জেএসও সমর্থন করে sendfile- তবে মনে হয় আপনাকে কিছু কোড লিখতে হবে, উদাহরণস্বরূপ দেখুন। blog.std.in/2010/09/09/using-sendfile-with-nodejs
tuomassalo

স্থির বিষয়বস্তু পরিবেশন করার বাইরে, জন-মুখোমুখি ডোমেনে প্রধান ওয়েব সার্ভার (টমক্যাট / জেটি / আইআইএস, ইত্যাদির) তুলনায় এনগিনেক্সের পারফরম্যান্স কেন ভাল হয়?
রাফিয়ান

4
যদি আপনার অ্যাপ্লিকেশনটিতে একটি অনুরোধ করা হয়, তবে সেই অনুরোধটি প্রথমে এনজিনেক্সের মাধ্যমে রুট করে জাদুকরভাবে দ্রুততর করা হবে না (এনগিনেক্স স্থির সিএসএস এবং জেএস, জিজিপ এবং এসএসএল পরিচালনা করলে এটি সবচেয়ে ভাল ক্ষেত্রে লক্ষ্য করা যায়)। তবে, এনগিনেক্সও সেরা সফ্টওয়্যার লোড ব্যালান্সারগুলির মধ্যে একটি, তাই বেশিরভাগ সার্ভারগুলি মাঝারিভাবে উচ্চ লোডগুলিতে ফ্লিপিংয়ের জন্য কুখ্যাত হওয়ার কারণে এটি সমালোচনামূলক হতে পারে।
m33lky

তবে আপনি নোড.জেএস ব্যবহার করে অ্যাসিঙ্কনাস পদ্ধতিতে ফাইলগুলি সার্ভার করতে পারেন আপনি কি এনজিআইএনএক্স দিয়ে এটি করতে পারেন?
ড্রাগগোস সি

4
@ লয়ানসব্রো সেই মানদণ্ডগুলিকে টেবিলের সাথে নিয়ে আসুন। এই বিষয়ে কমপক্ষে একজন ব্যক্তি নিজের পরীক্ষা-নিরীক্ষা করেছেন।
এম 33 এলকি

76

আমি ab -n 10000 -c 100একটি স্ট্যাটিক 1406 বাইট পরিবেশন করার জন্য একটি দ্রুত কাজ করেছি favicon.ico, এনগিনেক্স, এক্সপ্রেস.জেএস (স্ট্যাটিক মিডলওয়্যার) এবং ক্লাস্টার এক্সপ্রেস.জেএস এর তুলনা করে। আশাকরি এটা সাহায্য করবে:

এখানে চিত্র বর্ণনা লিখুন

দুর্ভাগ্যক্রমে আমি 1000 বা এমনকি 10000 একযোগে অনুরোধগুলিকে আমার মেশিনে এনজিনেক্স হিসাবে পরীক্ষা করতে পারছি না, ত্রুটি ছুঁড়ে দেওয়া শুরু করবে।

সম্পাদনা : আর্টভলকের পরামর্শ অনুসারে, এখানে ক্লাস্টার + staticমিডলওয়্যারের ফলাফল (ধীর):

এখানে চিত্র বর্ণনা লিখুন


আপনাকে অনেক ধন্যবাদ! আপনি কি এই মিডওয়্যারটি ফেভিকনের জন্য ব্যবহার করেছেন: senchalabs.org/connect/favicon.html অথবা কেবল এটি স্ট্যাটিক ফাইল হিসাবে পরিবেশন করেছেন?
আর্টভোলক

@ ফ্যাভিকন ওয়াল্টভোক :)
গ্রেভ

4
আপনি পরীক্ষার জন্য NODE_ENV = উত্পাদন সেট করেছেন? staticমিডিয়াওয়্যার উত্পাদনে করায় কারণ এটি অবিশ্বাস্য পার্থক্য করতে পারে ।
রাফ্রে

21
আপনারা যারা ইটালিয়ান ভাষায় কথা বলেন না তাদের জন্য x অক্ষরের অনুরোধ, এবং ওয়াই অক্ষটি এমএসের সংখ্যা যা ফাইলটি পরিবেশন করতে লেগেছিল। আমাকে গুগল অনুবাদ করতে হয়েছিল কারণ আমি নিশ্চিত করতে চেয়েছিলাম যে আমি ডেটা ভুল পড়ছি না। যদিও এই তথ্যটি অবিশ্বাস্যরূপে সহায়ক ছিল এবং আমি এখানে সত্যই বেঞ্চমার্ক পরীক্ষার প্রশংসা করি। সব পরে nginx সঙ্গে স্টিকিং করা হবে না
জেএল গ্রিফিন

4
NODE_ENV = উত্পাদন সেট ছিল?
বেসিক্রেল

11

আমার কাছে @ গ্রেমোর চার্টের আলাদা ব্যাখ্যা রয়েছে। এটি অনুরূপ সংখ্যার (9-10k এর মধ্যে) নোড এবং এনগিনেক্স স্কেল উভয়ের মতোই দেখায়। নিশ্চিত যে এনজিএনএক্সের প্রতিক্রিয়াটিতে অবিচ্ছিন্নতা একটি ধ্রুবক 20 মিমি দ্বারা কম, তবে আমি মনে করি না ব্যবহারকারীরা প্রয়োজনীয়ভাবে এই পার্থক্যটি বুঝতে পারবেন (যদি আপনার অ্যাপটি ভালভাবে নির্মিত হয়)। একটি নির্দিষ্ট সংখ্যক মেশিন দেওয়া হয়েছে, আমি নোডকে এই স্থানে বিবেচনা করব যে নোড যেখানে বেশিরভাগ লোড প্রথম স্থানে ঘটবে সেখানে বিবেচনা করে কোনও নোড মেশিনকে এনজিন্সে রূপান্তরিত করার আগে এটি যথেষ্ট পরিমাণে লোড নিতে পারে। এর একটির পাল্টা পয়েন্ট হ'ল যদি আপনি ইতিমধ্যে লোড ব্যালেন্সিংয়ের জন্য কোনও মেশিনকে এনজিনেক্সে উত্সর্গ করেন। যদি এটি হয় তবে আপনার পাশাপাশি এটি আপনার স্থির সামগ্রীকেও পরিবেশন করতে পারে।


4
"নিশ্চিত যে এনজিএনএক্সের প্রতিক্রিয়াটিতে অবিচ্ছিন্নতা একটি ধ্রুবক 20 মিমি দ্বারা কম, তবে আমি মনে করি না ব্যবহারকারীরা প্রয়োজনীয়ভাবে এই পার্থক্যটি বুঝতে পারবেন"? আমি গুরুত্ব সহকারে আশা করি আপনি ছেলেরা এটি করবেন না। এর প্রমাণ রয়েছে যে ব্যবহারকারীরা 1 মাইলের পার্থক্য বুঝতে পারবেন!
নবীন

4
তথ্যসূত্র প্রয়োজন
ডেভিড বুরোজ

9

যেভাবেই হোক, আমি স্থির ফাইলগুলি ক্যাশে করার জন্য এনগিনেক্স সেটআপ করব ... আপনি সেখানে একটি বিশাল পার্থক্য দেখতে পাবেন। তারপরে, আপনি নোড থেকে সেগুলি পরিবেশন করুন বা না করুন, আপনি মূলত আপনার নোড অ্যাপ্লিকেশনটিতে একই কর্মক্ষমতা এবং একই লোড-রিলিফ পাচ্ছেন।

আমি ব্যক্তিগতভাবে আমার এনগিনেক্স ফ্রন্ট্যান্ডের ধারণাটি বেশিরভাগ ক্ষেত্রে স্থিতিশীল সম্পদের পরিবেশন করা পছন্দ করি না

1) প্রকল্পটি এখন একই মেশিনে থাকতে হবে - বা সম্পদে বিভক্ত হতে হবে (এনজিএনএক্স মেশিনে) এবং ওয়েব অ্যাপ্লিকেশন (স্কেলিংয়ের জন্য একাধিক মেশিনে)

2) এনগিনেক্স কনফিগারেশনের এখন স্থিতিশীল সম্পদ / পুনরায় লোডের জন্য পথের অবস্থানগুলি তাদের পরিবর্তন করার সময় বজায় রাখতে হবে।


0

উত্তর দেওয়ার জন্য এটি একটি জটিল প্রশ্ন। আপনি যদি কেবল স্ট্যাটিক ফাইলগুলি পরিবেশন করার জন্য যদি একটি সত্যই হালকা ওজনের নোড সার্ভার লিখে থাকেন তবে এটি সম্ভবত এনজিনেক্সের চেয়ে আরও ভাল পারফর্ম করতে পারে তবে এটি এত সহজ নয়। ( এখানে একটি "মানদণ্ড" নোডেজ ফাইল সার্ভার এবং লাইটটিপিডির তুলনা করার জন্য - যা স্ট্যাটিক ফাইলগুলি পরিবেশন করার সময় এনজিঙ্গেক্সের সাথে পারফরম্যান্সের অনুরূপ)।

স্থির ফাইল পরিবেশন করার ক্ষেত্রে পারফরম্যান্স প্রায়শই কেবল কাজ করে কেবল ওয়েব-সার্ভারের চেয়ে কম হয়ে যায়। যদি আপনি সর্বাধিক পারফরম্যান্স চান, আপনি শেষ ব্যবহারকারীদের জন্য বিলম্বিতা হ্রাস করতে আপনার ফাইলগুলি পরিবেশন করতে সিডিএন ব্যবহার করবেন এবং প্রান্ত-ক্যাচিং থেকে সুবিধা পাবেন।

আপনি যদি এটি নিয়ে উদ্বিগ্ন না হন তবে নোড বেশিরভাগ পরিস্থিতিতে স্থির ফাইলগুলি পরিবেশন করতে পারে। নোড নিজেকে অবিচ্ছিন্ন কোডে toণ দেয়, এটি এটি নির্ভর করে যেহেতু এটি একক থ্রেডযুক্ত এবং যে কোনও ব্লকিং i / o পুরো প্রক্রিয়াটি ব্লক করতে পারে এবং আপনার অ্যাপ্লিকেশনগুলির কার্যকারিতা হ্রাস করতে পারে। সম্ভবত আপনি আপনার কোডটি একটি অ-ব্লকিং ফ্যাশনে লিখছেন, তবে আপনি যদি একযোগে কিছু করছেন তবে আপনার ব্লক হতে পারে, যা অন্যান্য ক্লায়েন্টরা তাদের স্ট্যাটিক ফাইলগুলি কীভাবে দ্রুত পরিবেশন করতে পারে তা হ্রাস করতে পারে। সহজ সমাধান হ'ল ব্লকিং কোড না লিখে, তবে কখনও কখনও এটি কোনও সম্ভাবনা নয় বা আপনি সর্বদা এটি প্রয়োগ করতে পারবেন না।


9
এই সব বাজে। এই প্রশ্নের বিষয়ে nginx এ্যাপাচি না। এনগিনেক্স এবং নোড উভয়ই তাদের ইভেন্ট লুপের জন্য লিবভ ব্যবহার করে। এনগিনেক্স নোডের চেয়ে বহুগুণ দ্রুত হতে চলেছে। তাদের মধ্যে একটি ভিএম এর ওভারহেড নেই, এবং আপনার ফাইল সিস্টেমে এই অপারেশন করতে বিশেষভাবে লেখা হয়।
ইভান ক্যারল

4
উদ্ধব ছিল প্রথম দিকে নোড। নোডকে ক্রসপ্ল্যাটফর্ম চালানোর অনুমতি দেওয়ার জন্য লিবিভ এই ভূমিকাটি গ্রহণ করেছে।
tsturzl

4
আমি দেখতে পাচ্ছি না যে এগুলিতে কীভাবে অ্যাসিক্রোনাস কোড যুক্ত হয়। নোডের পারফরম্যান্স এনগিনেক্সের চেয়ে আরও খারাপ হবে এবং সম্ভবত আপনি যখন আপনার কাছে ক্লায়েন্টের একটি দল পেয়েছিলেন যখন আপনাকে ডিস্ক থেকে ফাইলগুলি পড়তে বলছে তখন আপনি যে আই / ওকে আটকাবেন সেটিকে ব্লক করার কারণে। স্থির সম্পদের জন্য সর্বদা Nginx ব্যবহার করা সর্বোত্তম অনুশীলন হ'ল যাতে আপনার নোড অ্যাপ্লিকেশনটি লজিক পরিচালনা করতে পারে। আমরা তাত্ত্বিক পরিস্থিতি সম্পর্কে কথা বলতে পারি যেখানে নোড আরও ভাল পারফরম্যান্স করবে কিন্তু বাস্তব বিশ্বে Nginx 10 এর মধ্যে 9 বার একটি মাইল জয় করবে
wgp

-11

আমি নিশ্চিত যে খাঁটি নোড.জেএস অনেক দিক থেকে এনজিনেক্সকে ছাড়িয়ে যেতে পারে।

সমস্ত বলেছে আমাকে থাকতে হবে এনগিনএক্সের একটি অন্তর্নির্মিত ক্যাশে রয়েছে, যদিও নোড.জেএস এটির সাথে কারখানা ইনস্টল করা আসে না (আপনি নিজের ফাইল ফাইলটি তৈরি করতে পারেন)। কাস্টম ফাইল ক্যাশে এটি অতি সাধারণ হিসাবে বাজারে Nginx এবং অন্য কোনও সার্ভারকে ছাড়িয়ে যায়।

এছাড়াও Nginx একাধিক কোর চালায়। নোডের সম্পূর্ণ সম্ভাব্যতা ব্যবহার করতে আপনাকে নোড সার্ভারগুলি ক্লাস্টার করতে হবে। আপনি যদি জানতে আগ্রহী হন তবে দয়া করে বিকেল বেলা করুন।

নোড দিয়ে পারফরম্যান্স নির্বান অর্জন করতে আপনাকে গভীর খননকারীর প্রয়োজন, এটিই একমাত্র সমস্যা। একবার নরক হ্যাঁ ... এটি এনগিন্সকে পরাজিত করে।


4
আপনার কিছু তথ্য আনতে হবে, যেমনটি আপনি যা বলছেন তা আমি বিশ্বাস করতে চাই তবে সত্যিকারের বিশ্বের উপর ভিত্তি করে যদি মানদণ্ডের দরকার হয় তবে দুর্দান্ত! তবে প্রান্তের মামলা নয়
স্টেফান রোগিন

4
মজার বিষয় হ'ল এই উত্তরটিতে সর্বাধিক ভোটের সাহায্যে নির্বাচিত উত্তর হিসাবে যতগুলি তথ্য রয়েছে। আমি মনে করি লোকেরা কেবল একটি ওয়েব সার্ভারকে সামনে পছন্দ করে কারণ তাদের এভাবেই [অন্য কোনও ওয়েব অ্যাপ্লিকেশন প্রযুক্তি সন্নিবেশ করানো] তে এটি শেখানো হয়েছিল। এটি ভাল উত্তর নয় তবে করুণার বাইরে 1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.