আমার লক্ষ্যটি হচ্ছে একটি একক সার্ভারে 10000 একযোগে এসএসএস চালানোর অনুমতি দেওয়া ।
সরলতার জন্য আমি লোকালহোস্টে এসএসএন-ইন করছি:
for i in `seq 1 10000`; do
ssh localhost "echo ${i}; sleep 100" >>./info 2>>./log &
done
sleep 100
10000th SSH শুরু, 1 ম SSH সংযোগ এখনও যখন তাই প্রকৃতপক্ষে 10000 নিশ্চিত করা হয় সমবর্তী SSH গুলি।
এবং এখানে আমি পেয়েছি দুটি ধরণের ত্রুটি বার্তা:
1. ssh_exchange_identification: Connection closed by remote host
2. ssh_exchange_identification: read: Connection reset by peer
আমি নিম্নলিখিত পরিবর্তনগুলি করেছি:
- ইন
/etc/security/limits.conf
এবং/etc/security/limits.d/90-nproc.conf
, সেট নরম & হার্ডnofile
&nproc
65535 করতে (?।: - কোন সর্বোচ্চ মান আপডেট করুন এই সর্বোচ্চ সম্ভব মান সঠিক 1048576 ) - ইন
/etc/sysctl.conf
, সেটkernel.pty.max = 65535
- ইন
/etc/ssh/sshd_config
, সেটMaxStartups 10000
।
এই পরিবর্তনগুলি আমাকে একক সার্ভারে 1000 একযোগে এসআরএস সাফল্যের সাথে চালানোর অনুমতি দেয় , তবে তারা 2000 এবং তার বেশি ssh এর জন্য কাজ করে না ।
কিছু লোক এর জন্য মান পরিবর্তন করার পরামর্শ দিয়েছে MaxSessions
(আসলে আমি এর ব্যবহার সম্পর্কে পরিষ্কার নই: মাল্টিপ্লেক্সিং কীভাবে আমার ক্ষেত্রে প্রভাব ফেলবে?) /proc/sys/net/core/netdev_max_backlog
এবং /proc/sys/net/core/somaxconn
, তবে তারা কোনও তাত্পর্যপূর্ণ বলে মনে হয় না।
এছাড়া কোন ত্রুটি আছে যদি তারা 10000 সমবর্তী SSH করার গুলি বিভিন্ন সার্ভার (সমস্যার শুধুমাত্র ঘটে যখন একটি থেকে SSH একক সার্ভার):
for i in `seq 1 10000`; do
j=$(( 1 + $i % 8 ))
ssh server-${j} "echo hi; sleep 100" >info-${j} 2>log-${j} &
done
আমি এই উপর দীর্ঘ দীর্ঘ আটকে ছিল।
কোন সাহায্য গভীরভাবে প্রশংসা করা হবে!
sleep 100s
আপনি যা ভাবেন তা করি না বলে আমি মনে করি না। এটি ssh সেশনে নয়, আপনার নিজের মেশিনে কার্যকর করা হবে।
error: reexec socketpair: Too many open files
, সুতরাং আমি অনুমান করি যে পূর্ববর্তী মানটি nofile
(অর্থাত 65535) যথেষ্ট পরিমাণে থেকে দূরে ছিল। আমি কন্ট্রোলমাস্টারের সাথে পরিচিত নই তবে আমি চেষ্টা করব, ধন্যবাদ !! :)
ps axu | egrep "ssh|sleep" | grep -v grep
সম্পাদন করি sleep 100s
, কেবলমাত্র তালিকাটি লিখিত থাকে , নয় ssh
। আমি মনে করি আপনার এই আদেশটি পরিবর্তন করা উচিত ssh "echo hi; sleep 100s"
।
sleep 100
মাধ্যমে প্রেরিত কমান্ডে থাকা উচিত, এটি আমার আসল স্ক্রিপ্টের ক্ষেত্রে তবে আমি এখানে একটি টাইপও করেছি। আমি সেই অনুযায়ী প্রধান পোস্ট আপডেট করেছি। এটিকে নির্দেশ করার জন্য আপনাকে অনেক ধন্যবাদ !!