একক সার্ভারে প্রচুর পরিমাণে সমবর্তী এসএসএইচ সক্ষম করুন


9

আমার লক্ষ্যটি হচ্ছে একটি একক সার্ভারে 10000 একযোগে এসএসএস চালানোর অনুমতি দেওয়া ।

সরলতার জন্য আমি লোকালহোস্টে এসএসএন-ইন করছি:

for i in `seq 1 10000`; do
    ssh localhost "echo ${i}; sleep 100"  >>./info 2>>./log &
done

sleep 10010000th SSH শুরু, 1 ম SSH সংযোগ এখনও যখন তাই প্রকৃতপক্ষে 10000 নিশ্চিত করা হয় সমবর্তী SSH গুলি।

এবং এখানে আমি পেয়েছি দুটি ধরণের ত্রুটি বার্তা:

1. ssh_exchange_identification: Connection closed by remote host

2. ssh_exchange_identification: read: Connection reset by peer

আমি নিম্নলিখিত পরিবর্তনগুলি করেছি:

  1. ইন /etc/security/limits.confএবং /etc/security/limits.d/90-nproc.conf, সেট নরম & হার্ড nofile& nproc65535 করতে (?।: - কোন সর্বোচ্চ মান আপডেট করুন এই সর্বোচ্চ সম্ভব মান সঠিক 1048576 )
  2. ইন /etc/sysctl.conf, সেটkernel.pty.max = 65535
  3. ইন /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

আমি এই উপর দীর্ঘ দীর্ঘ আটকে ছিল।
কোন সাহায্য গভীরভাবে প্রশংসা করা হবে!


1
sshd সার্ভার লগ সংযোগ প্রত্যাখ্যান করার কারণ সম্পর্কে আরও তথ্য সরবরাহ করতে পারে। মূলত আপনি যদি মাত্র 10000 সেশন চান তবে আমি আপনাকে কন্ট্রোলমাস্টার (এবং তারপরে অবশ্যই ম্যাক্স সেশনগুলি টোল) ব্যবহার করে মাল্টিপ্লেক্সিং ব্যবহার করার পরামর্শ দিচ্ছি।
জাকুজে

1
sleep 100sআপনি যা ভাবেন তা করি না বলে আমি মনে করি না। এটি ssh সেশনে নয়, আপনার নিজের মেশিনে কার্যকর করা হবে।
ড্যানিয়েল কুলম্যান

1
@ জাকুজে আমাকে সার্ভার লগ চেক করার জন্য মনে করিয়ে দেওয়ার জন্য ধন্যবাদ! আমি খুঁজে পেয়েছি error: reexec socketpair: Too many open files, সুতরাং আমি অনুমান করি যে পূর্ববর্তী মানটি nofile(অর্থাত 65535) যথেষ্ট পরিমাণে থেকে দূরে ছিল। আমি কন্ট্রোলমাস্টারের সাথে পরিচিত নই তবে আমি চেষ্টা করব, ধন্যবাদ !! :)
ক্লারা

1
আকর্ষণীয়, যখন আমি লাইনগুলির একটি ps axu | egrep "ssh|sleep" | grep -v grepসম্পাদন করি sleep 100s, কেবলমাত্র তালিকাটি লিখিত থাকে , নয় ssh। আমি মনে করি আপনার এই আদেশটি পরিবর্তন করা উচিত ssh "echo hi; sleep 100s"
ড্যানিয়েল কুলম্যান

2
@ ডানিয়েলকুলম্যান হ্যাঁ আপনি একেবারে ঠিক বলেছেন - এসএসএসের sleep 100মাধ্যমে প্রেরিত কমান্ডে থাকা উচিত, এটি আমার আসল স্ক্রিপ্টের ক্ষেত্রে তবে আমি এখানে একটি টাইপও করেছি। আমি সেই অনুযায়ী প্রধান পোস্ট আপডেট করেছি। এটিকে নির্দেশ করার জন্য আপনাকে অনেক ধন্যবাদ !!
ক্লারা

উত্তর:


2

/ আমার ইচ্ছা তিনি মন্তব্য করতে পারে

sshd এর প্রয়োজন (সাধারণত, তবে আপনি সঠিক ব্যবহারের ক্ষেত্রে (গুলি) ইত্যাদি নির্দিষ্ট করেন নি) তবে লগইন প্রতি পিটিআই বরাদ্দ করুন, তবে আপনার ক্ষেত্রে ssh "ইকো হাই; স্লিপ 100s" একটি পিটিআই বরাদ্দ করে না, তাই কার্নেল.পটি.ম্যাক্স সেটিংয়ের প্রয়োজন নেই ... যদি না আপনি হাজার হাজার ব্যবহারকারী * ... এটির জন্য লগ ইন করতে চান তবে আপনার পরীক্ষায় -t বিকল্পটি যুক্ত করতে হবে, যেমন। ssh -t "প্রতিধ্বনি হাই; ঘুম 100s"

error: reexec socketpair: Too many open files জেসি সিস্টেমে টেস্ট অন হুইজি ডিস্ট-আপগ্রেড করে টেস্ট নিয়ে ইস্যুটিতে ফিরে এসে আমি দেখেছি যে / ইত্যাদি / সুরক্ষা / সীমা * এসএসডি এর সীমা পরিবর্তন করে না।

চেক করুন যে সঙ্গে cat /proc/<pid-of-sshd>/limits যা আমার ক্ষেত্রে, /etc/security/limits.conf মধ্যে নির্ধারণের পরে: * nofile নরম 65535 * nofile হার্ড 65535 মাত্র 1024 (নরম) এবং 4096 (হার্ড) sshd কমান্ড-এর সীমাবদ্ধতাগুলি জন্য রিপোর্ট। রেজল্যুশন বলপূর্বক উপস্থিত হতে পারে ulimit -Hn 65535& ulimit -n 65535ভিতরে /etc/init.d/sshস্ক্রিপ্ট যে ulimit কমান্ড ব্যবহার করে, আমি 1024/4096 থেকে 65535/65535 করার sshd কমান্ড এর nofiles উত্থাপিত করেছি

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