नोट: यह एक "कैसे डीबग करने के लिए" ट्यूटोरियल के रूप में शुरू हुआ, लेकिन इस समाधान को समाप्त करने में मदद मिली जिसने मुझे 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और अनुरोध पर उस प्रिंटआउट को प्राप्त कर सकते हैं।