नोट: यह एक "कैसे डीबग करने के लिए" ट्यूटोरियल के रूप में शुरू हुआ, लेकिन इस समाधान को समाप्त करने में मदद मिली जिसने मुझे Ubuntu 16.04 LTS सर्वर पर मदद की ।
TLDR : चलाएं landscape-sysinfo
और जांचें कि क्या कमांड खत्म होने में लंबा समय लेती है; यह एक नए SSH लॉगिन पर सिस्टम की जानकारी का प्रिंटआउट है। ध्यान दें कि यह कमांड सभी प्रणालियों पर उपलब्ध नहीं है, landscape-common
पैकेज इसे स्थापित करता है। ("लेकिन रुको, वहाँ और अधिक है ...")
मशीन पर एक और पोर्ट पर दूसरा ssh सर्वर शुरू करें जिसमें समस्या है, डिबग मोड में ऐसा करें, जो इसे फोर्क नहीं करेगा और डीबग संदेश प्रिंट करेगा:
sudo /usr/sbin/sshd -ddd -p 44321
क्रिया मोड में किसी अन्य मशीन से उस सर्वर से कनेक्ट करें:
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
'में d /etc/update-motd.d
और एक भाग गया sudo chmod -x *
आदेश सभी फ़ाइलों को जो इस गतिशील उत्पन्न चलाने के लिए पीएएम को बाधित करने में Message Of The Day
है, जो प्रणाली लोड भी शामिल है और उन्नत करने की है, तो संकुल की जरूरत है, और इस मुद्दे को हल किया।
यह एक "ऊर्जा-कुशल" एन 3150 सीपीयू पर आधारित सर्वर है, जिसमें 24/7 करने के लिए बहुत काम है, इसलिए मुझे लगता है कि यह सब मोटिव-डेटा एकत्र करना सिर्फ इसके लिए बहुत अधिक था।
मैं चुनिंदा रूप से उस फ़ोल्डर में स्क्रिप्ट को सक्षम करना शुरू कर सकता हूं, जो देखने के लिए कम हानिकारक हैं, लेकिन विशेष रूप से कॉलिंग 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
और अनुरोध पर उस प्रिंटआउट को प्राप्त कर सकते हैं।