সর্বাধিক সমবর্তী সকেট.আইও সংযোগ


123

এই প্রশ্নটি আগে জিজ্ঞাসা করা হয়েছিল তবে সম্প্রতি নয় এবং একটি পরিষ্কার উত্তর দিয়ে নয়।

সকেট.ইও ব্যবহার করে, সর্বাধিক সংখ্যক একযোগে সংযোগ রয়েছে যা আপনি অন্য সার্ভার যুক্ত করার আগে একটিকে ধরে রাখতে পারবেন?

ওয়েবস্কোকেটগুলি (বিশেষত সকেট.আইও) ব্যবহার করছেন এমন কোনও সক্রিয় উত্পাদন পরিবেশ সম্পর্কে কি কেউ জানেন? আমি সত্যিই জানতে চাই যে সর্বোচ্চ সংযোগের জন্য কোন ধরণের সেটআপ সবচেয়ে ভাল?

যেহেতু ওয়েবসাইটসকেটগুলি টিসিপির শীর্ষে নির্মিত হয়েছে, আমার বোঝা হ'ল পোর্টগুলি যদি সংযোগগুলির মধ্যে ভাগ না করা হয় তবে আপনি 64 কে বন্দর সীমাতে আবদ্ধ হতে চলেছেন। তবে আমি গ্রেটি ব্যবহার করে 512 কে সংযোগের রিপোর্টও দেখেছি । সুতরাং আমি জানি না।


3
ট্রেলো প্রচুর পরিমাণে সকেট ব্যবহার করে (বিশেষত, সকেট.ইও)।
জেমস

আমি পড়েছি যে 10,000 টি সংযোগ ক্যাপের কারণে ট্রেলোকে সকেট.ইও কোডটি সংশোধন করতে হয়েছিল এবং সার্ভার যুক্ত করার আগে 'বহু হাজার' সংযোগ বজায় রাখতে সক্ষম হয়েছিল। এখনও এবং অন্যান্য সার্ভার সিস্টেমের 512K এর মধ্যে একটি বিশাল উপসাগর।
অ্যান্ড্রু

1
যদিও এই নিবন্ধটি কত বছরের পুরানো? ট্রেলো সম্প্রতি মাসে এক মিলিয়ন সক্রিয় ব্যবহারকারীদের কাছে পৌঁছেছে তাই আমি কল্পনা করব তারা এখন 10,000 টিরও বেশি সক্রিয় সকেট চালাচ্ছে kets ট্রেলো স্কেলিবিলিটির জন্য সকেট শীর্ষে বসে রেডিস ব্যবহার করেন
জেমস

2
ট্রেলোর এখন স্পষ্টতই 4 মিলিয়নের বেশি ব্যবহারকারী রয়েছে, তবে তারা কি এটি প্রচুর সংখ্যক সার্ভারে চালাচ্ছেন, তাই না? এটি আমাকে আমার আসল প্রশ্নে ফিরিয়ে এনেছে: সার্ভারে তাদের (বা অন্য কারও) প্রকৃত শিখর সমবর্তী ব্যবহারকারী গণনাটি কী? তারা কী ধরণের সার্ভার / ধারক ব্যবহার করে তাও জেনে রাখা ভাল। এবং তারা কি এখনও তাদের নিজের কাঁটাচামচ চালাচ্ছে, না তারা আবার উত্স / মাস্টারে ফিরে এসেছে? এই প্রশ্নটি জিজ্ঞাসা করার আমার একমাত্র উদ্দেশ্যটি ছিল যদি আমার সংস্থাটি (সেই সময়ে) সম্ভবত সেকলেট.ইও অ্যাপ্লিকেশন বজায় রাখতে পারে তবে সম্ভবত ১২,০০,০০০ একত্রে সংযোগ স্থাপন করতে পারত।
অ্যান্ড্রু

1
বন্দর সীমা সম্পর্কে, আমি মনে করি যে এটি কেন একটি সমস্যা নয় তার ব্যাখ্যা এখানে ব্যাখ্যা করা হয়েছে । মূলত, আপনার সিস্টেমে ব্যবহৃত একমাত্র বন্দরটি আপনি শুনছেন। প্রতিটি সংযোগের জন্য সকেট তৈরি করা হয় এবং সেগুলি ফাইল বর্ণনাকারী ব্যবহার করে তবে তারা আপনার বাক্সে পোর্ট ব্যবহার করে না।
পল লিঞ্চ

উত্তর:


77

এই নিবন্ধটি আপনাকে সহায়তা করতে পারে: http://drewww.github.io/sket.io-benchmarking/

আমি একই প্রশ্নটি অবাক করেছিলাম, তাই সংযোগগুলি কখন ব্যর্থ হতে শুরু করে (বা পিছনে পড়ে) তা দেখতে আমি একটি ছোট পরীক্ষা (এক্সএইচআর-পোলিং ব্যবহার করে) লিখে শেষ করেছি। আমি খুঁজে পেয়েছি (আমার ক্ষেত্রে) সকেটগুলি প্রায় 1400-1800 সমবর্তী সংযোগে কাজ শুরু করে।

এটি আমি তৈরি একটি সংক্ষিপ্ত বক্তব্য, যা আমি ব্যবহার করেছি পরীক্ষার মতো: https://gist.github.com/jmyrland/5535279


7
আমি বুঝতে পেরেছি এটি একটি পুরানো বিষয় তবে আমার উত্তরের কোনও প্রশ্নের সন্ধান করার সময় আমি এটি প্রথম খুঁজে পেয়েছিলাম এবং শেষ পর্যন্ত এটি সহায়ক হতে পেরেছি : rtcamp.com/tutorials/linux/increase-open-files-limit প্রক্রিয়া প্রতি খোলার ফাইল সীমা হতে পারে 1024 এর নরম সীমা এবং 4096 এর হার্ড সীমাতে ডিফল্ট এবং যেহেতু প্রতিটি উন্মুক্ত টিসিপি পোর্ট কোনও ফাইলকে উপস্থাপন করে, গ্রন্থাগারটি সর্বাধিক করার চেষ্টা করার আগে কোনও মেশিন কতগুলি উন্মুক্ত সকেটকে অনুমতি দেবে তা নির্ধারণ করার সময় এই সীমাগুলি বিবেচনা করা গুরুত্বপূর্ণ।
ডিপআইডিআইডি

2
@ জ্যাম আপনি কি কখনও আবিষ্কার করেছেন যে কেন আপনার ওয়েব সকেটগুলি প্রায় 1400-1800 সংযোগের কাজ করছে? আমার অভিন্ন সমস্যা হচ্ছে, এবং আমার ফাইলের সীমাটি 100,000 তে সেট করা আছে, তাই আমি জানি যে এটি সমস্যা নয়। কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে। ধন্যবাদ.
শেঠ

@ সেথ: আমি সর্বশেষ এটি পর্যালোচনা করে কিছুক্ষণ হয়ে গেছে, তবে আমি মনে করি এটি ছিল সিদ্ধান্ত: এক্সএইচআর পোলিংয়ে খুব বেশি সংস্থান গ্রহণ করেছে (অন্যান্য পরিবহণ পদ্ধতির ক্ষেত্রে)। ওয়েবসকেট ব্যবহার করার সময়, একত্রে সংযোগের সংখ্যা বেশি ছিল।
জেএম

@ জ্যাম উত্তরের জন্য আপনাকে ধন্যবাদ। আমি একই সমস্যাগুলি ডাব্লুএস মডিউলটি ব্যবহার করে দেখছি, সকেট.ইও নয়, তাই ডাব্লুএস মডিউলটির সাথে কোনও এক্সএইচআর পোলিং হওয়া উচিত নয়। সেখান থেকেই আমার সমস্যা সমাধানের সমস্যা হচ্ছে। অনুসন্ধান অব্যাহত আছে।
সেথ

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

16

আমি অ্যাডাব্লুএসে সকেট.আইও ব্যবহার করার চেষ্টা করেছি, আমি প্রায় 600 টি সংযোগ স্থিতিশীল রাখতে পারি।

এবং আমি এটি খুঁজে পেয়েছি কারণ সকেট.আইও প্রথমে দীর্ঘ ভোটদান ব্যবহার করেছে এবং পরে ওয়েবসকেটে আপগ্রেড করেছে।

আমি কেবল ওয়েবসকেট ব্যবহারের জন্য কনফিগারটি সেট করার পরে আমি প্রায় 9000 সংযোগ রাখতে পারি।

ক্লায়েন্টের পাশে এই কনফিগারেশনটি সেট করুন:

const socket = require('socket.io-client')
const conn = socket(host, { upgrade: false, transports: ['websocket'] })

2
আপনি ইসি 2 ব্যবহার করেছেন, কোন ধরণের উদাহরণ? t2.micro, t2.nano?
বিভিডিবি

2
আপনি যখন ওয়েবসকেটগুলিকে জোর করান তখন কি প্রতিক্রিয়াশীলতার মধ্যে কোনও পার্থক্য লক্ষ্য করেছেন?
লরেন

আপনি কি জানেন যে আপনার উদাহরণটি কত আকারের ছিল? এছাড়াও ঠিক তাই ভবিষ্যতে যে কেউ জানেন যে কিছু পুরানো ব্রাউজার ওয়েবস্কটকে সমর্থন করে না যার কারণে কারও কারও কাছে আপগ্রেড গুরুত্বপূর্ণ হতে পারে।
রায়ান সোডারবার্গ

সার্ভারটি কত সংযোগ সমর্থন করে তা আমরা কীভাবে পরীক্ষা করতে পারি? আপনি এটি 9000 সংযোগ কীভাবে পরিমাপ করলেন? দয়া করে প্রস্তাব দিন ..
কৌতুহল বিকাশকারী

15

এই লোকটি একক নোড.জেএস সার্ভারে 1 মিলিয়নেরও বেশি সমবর্তী সংযোগ স্থাপনে সফল হয়েছে বলে মনে হচ্ছে।

http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/

তিনি ঠিক কতটি বন্দর ব্যবহার করছিলেন তা আমার কাছে পরিষ্কার নয়।


13
সকেট.ওয়ের সাথে নয় আমিও ভাবি এবং এমনকি ওয়েবসকেট দিয়েও না। লোকটি মনে হচ্ছে দীর্ঘ ভোটদানের ব্যবহার করছে যা আমার ধারণা কম রিসোর্স কম।
টিম 333

6

+ 300k সমবর্তী সংযোগের জন্য:

এই ভেরিয়েবলগুলিকে এতে সেট করুন /etc/sysctl.conf:

fs.file-max = 10000000 
fs.nr_open = 10000000

এছাড়াও, এই ভেরিয়েবলগুলিকে এতে পরিবর্তন করুন /etc/security/limits.conf:

* soft nofile 10000000
* hard nofile 10000000
root soft nofile 10000000
root hard nofile 10000000

এবং অবশেষে, টিসিপি বাফারগুলিতেও বাড়ান /etc/sysctl.conf:

net.ipv4.tcp_mem = 786432 1697152 1945728
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216

আরও তথ্যের জন্য দয়া করে https://www.linangran.com/?p=547 দেখুন


আমাদের পরিবর্তনগুলি কাজ করছে কিনা তা কীভাবে পরীক্ষা করবেন?
কৌতূহল বিকাশকারী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.