หมายเหตุ: สิ่งนี้เริ่มต้นเป็น "วิธีการแก้ปัญหา", บทช่วยสอน, แต่จบลงด้วยการเป็นโซลูชันที่ช่วยฉันบนเซิร์ฟเวอร์Ubuntu 16.04 LTS
TLDR : เรียกใช้landscape-sysinfo
และตรวจสอบว่าคำสั่งนั้นใช้เวลานานกว่าจะเสร็จหรือไม่ เป็นข้อมูลระบบที่พิมพ์ออกมาในการเข้าสู่ระบบ SSH ใหม่ โปรดทราบว่าคำสั่งนี้ไม่สามารถใช้ได้กับทุกระบบlandscape-common
แพ็คเกจจะติดตั้ง ("แต่เดี๋ยวก่อนยังมีอีก ... ")
เริ่มเซิร์ฟเวอร์ ssh ตัวที่สองบนพอร์ตอื่นบนเครื่องที่มีปัญหาทำเช่นนั้นในโหมดดีบักซึ่งจะไม่ทำให้เกิดการแยกและจะพิมพ์ข้อความดีบั๊ก:
sudo /usr/sbin/sshd -ddd -p 44321
เชื่อมต่อกับเซิร์ฟเวอร์นั้นจากเครื่องอื่นในโหมด verbose:
ssh -vvv -p 44321 username@server
ไคลเอ็นต์ของฉันแสดงบรรทัดต่อไปนี้ทันทีก่อนที่จะเริ่มโหมดสลีป:
debug1: Entering interactive session.
debug1: pledge: network
Googling ที่ไม่เป็นประโยชน์จริงๆ แต่บันทึกของเซิร์ฟเวอร์ดีกว่า:
debug3: mm_send_keystate: Finished sending state [preauth]
debug1: monitor_read_log: child log fd closed
debug1: PAM: establishing credentials
debug3: PAM: opening session
---- Pauses here ----
debug3: PAM: sshpam_store_conv called with 1 messages
User child is on pid 28051
ฉันสังเกตเห็นว่าเมื่อฉันเปลี่ยนUsePAM yes
ไปUsePAM no
แล้วปัญหานี้จะได้รับการแก้ไข
ไม่เกี่ยวข้องUseDNS
หรือตั้งค่าอื่นใดUsePAM
มีผลกับปัญหานี้ในระบบของฉันเท่านั้น
ฉันมีเงื่อนงำทำไมไม่และฉันยังไม่ได้ออกจากUsePAM
ที่no
เพราะผมไม่ทราบว่าผลข้างเคียงมี แต่นี้จะช่วยให้ฉันยังคงสืบสวน
ดังนั้นโปรดอย่าคิดว่านี่เป็นคำตอบ แต่เป็นขั้นตอนแรกเพื่อเริ่มค้นหาว่ามีอะไรผิดปกติ
ดังนั้นฉันจึงตรวจสอบต่อไปและวิ่งไปsshd
กับstrace
( sudo strace /usr/sbin/sshd -ddd -p 44321
) สิ่งนี้ให้ผลดังต่อไปนี้:
sendto(4, "<87>Nov 20 20:35:21 sshd[2234]: "..., 110, MSG_NOSIGNAL, NULL, 0) = 110
close(5) = 0
stat("/etc/update-motd.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
umask(022) = 02
rt_sigaction(SIGINT, {SIG_IGN, [], SA_RESTORER, 0x7f15dce784b0}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGQUIT, {SIG_IGN, [], SA_RESTORER, 0x7f15dce784b0}, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
clone(child_stack=0, flags=CLONE_PARENT_SETTID|SIGCHLD, parent_tidptr=0x7ffde6152d2c) = 2385
wait4(2385, # BLOCKS RIGHT HERE, BEFORE THE REST IS PRINTED OUT # [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 2385
เส้น/etc/update-motd.d
ทำให้ฉันสงสัยว่ากระบวนการรอผลของสิ่งที่อยู่ในนั้น/etc/update-motd.d
ดังนั้นฉันจึงcd
เข้าไป/etc/update-motd.d
และรัน a sudo chmod -x *
เพื่อยับยั้ง PAM ให้เรียกใช้ไฟล์ทั้งหมดที่สร้างไดนามิกนี้Message Of The Day
ซึ่งรวมถึงโหลดระบบและหากแพ็คเกจจำเป็นต้องอัพเกรดและสิ่งนี้สามารถแก้ไขปัญหาได้
นี่คือเซิร์ฟเวอร์ที่ใช้ซีพียู N3150 ที่ประหยัดพลังงานซึ่งมีงานมากมายให้ทำตลอด 24 ชั่วโมงทุกวันดังนั้นฉันคิดว่าการรวบรวม motd-data ทั้งหมดนี้มากเกินไป
ฉันอาจเริ่มเปิดใช้งานสคริปต์ในโฟลเดอร์นั้นแบบเลือกเพื่อดูว่ามีอันตรายน้อยกว่า แต่การโทรพิเศษlandscape-sysinfo
ช้ามากและ50-landscape-sysinfo
เรียกคำสั่งนั้น ฉันคิดว่าเป็นสิ่งที่ทำให้เกิดความล่าช้ามากที่สุด
หลังจากเปิดใช้งานไฟล์ส่วนใหญ่อีกครั้งฉันได้ข้อสรุปว่า
50-landscape-sysinfo
และ99-esm
เป็นสาเหตุของปัญหาของฉัน 50-landscape-sysinfo
ใช้เวลาประมาณ 5 วินาทีในการดำเนินการและ99-esm
ประมาณ 3 วินาที ไฟล์ที่เหลือทั้งหมดประมาณ 2 วินาทีพร้อมกัน
ไม่50-landscape-sysinfo
และ99-esm
มีความสำคัญ 50-landscape-sysinfo
พิมพ์สถิติของระบบที่น่าสนใจ (และถ้าคุณมีพื้นที่เหลือน้อย!) และ99-esm
พิมพ์ข้อความที่เกี่ยวข้องUbuntu Extended Security Maintenance
ในที่สุดคุณสามารถสร้างสคริปต์ด้วยecho '/usr/bin/landscape-sysinfo' > info.sh && chmod +x info.sh
และรับงานพิมพ์นั้นตามที่ร้องขอ