เป้าหมายของฉันคืออนุญาตให้ 10,000 sshทำงานพร้อมกันบนเซิร์ฟเวอร์เดียว
เพื่อความเรียบง่ายฉันกำลังไปที่ localhost:
for i in `seq 1 10000`; do
ssh localhost "echo ${i}; sleep 100" >>./info 2>>./log &
done
sleep 100
เพื่อให้แน่ใจว่าเมื่อ 10000 SSH เริ่มต้นที่ SSH ที่ 1 ยังคงอยู่ในการเชื่อมต่อเพื่อให้มีแน่นอน 10000 พร้อมกัน SSH s
และนี่คือข้อความแสดงข้อผิดพลาดสองประเภทที่ฉันได้รับ:
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
ตั้งค่า soft & hardnofile
&nproc
เป็น 65535 (นี่เป็นค่าสูงสุดที่เป็นไปได้ใช่ไหม - อัปเดต: ไม่ค่าสูงสุดคือ1048576 ) - ในการ
/etc/sysctl.conf
ตั้งค่าkernel.pty.max = 65535
- ในชุด
/etc/ssh/sshd_config
MaxStartups 10000
การปรับเปลี่ยนเหล่านี้ช่วยให้ผมที่จะทำงานได้สำเร็จ 1000 พร้อมกันSSH s ไปยังเซิร์ฟเวอร์เดียว แต่พวกเขาจะไม่ได้ทำงานสำหรับปี 2000 และเหนือSSH s
บางคนแนะนำให้เปลี่ยนค่าสำหรับ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) นั้นยังห่างไกลจากที่เพียงพอ ฉันไม่คุ้นเคยกับ ControlMaster แต่ฉันจะลองขอขอบคุณ !! :)
ps axu | egrep "ssh|sleep" | grep -v grep
แสดงรายการเฉพาะไม่sleep 100s
ฉันคิดว่าคุณควรเปลี่ยนคำสั่งไปยังssh
ssh "echo hi; sleep 100s"
sleep 100
ควรอยู่ในคำสั่งที่ส่งผ่าน ssh ซึ่งเป็นกรณีในสคริปต์จริงของฉัน แต่ฉันพิมพ์ผิดที่นี่ ฉันได้อัปเดตโพสต์หลักตาม ขอบคุณมากสำหรับการชี้ให้เห็น !!