जुनिपर पियरिंग राउटर के इंजन पर उच्च सीपीयू लोड का कारण


20

हाल ही में हमारे दो जुनिपर पियरिंग राउटरों में से रूटिंग इंजन सीपीयू का उपयोग ~ 10-20% औसत लोड से बढ़कर 80 +% हो गया। मैं यह पता लगाने की कोशिश कर रहा हूं कि यह क्या कारण है (और कैसे इस उच्च भार को वापस पाने के लिए)।

राउटर पर कुछ जानकारी: दोनों एक ही JunOS संस्करण चलाते हैं, दोनों एक ही दो peering IXP LAN से जुड़े हैं और बड़ी संख्या (कई सैकड़ों) (लगभग समान) IPv4 और IPv6 सत्र हैं। दोनों राउटर का एक अलग आईपी ट्रांजिट प्रदाता से संबंध है और हमारे नेटवर्क के बाकी हिस्सों में उसी तरह से जुड़ा हुआ है। रूटिंग इंजन 'सीपीयू लोड 80 +% पर फ्लैटलाइन नहीं है, मिनटों से लेकर घंटों तक सामान्य स्तर पर वापस आ जाता है, लेकिन ये बूँदें अक्सर नहीं होती हैं।

जिन चीजों की मैंने जाँच की है:

  • वृद्धि शुरू होने के समय में कोई विन्यास परिवर्तन नहीं किया गया है
  • नियंत्रण विमान पर निर्देशित गैर-असिंचित यातायात में कोई वृद्धि नहीं हुई है
  • आगे भेजे जा रहे ट्रैफ़िक की मात्रा में कोई (पर्याप्त) परिवर्तन नहीं है (हालाँकि इसमें भी कोई वृद्धि नहीं होनी चाहिए)
  • show system processes summaryइंगित करता है कि rpdप्रक्रिया उच्च CPU लोड का कारण बन रही है
  • बड़ी संख्या में बीजीपी परिवर्तन का कारण बनने वाले बीजीपी के साथी तेजी से फड़फड़ा रहे हैं

IXP के दोनों राउटरों में से एक पर एक संभावित स्पष्टीकरण एक सहकर्मी (या एक से अधिक) है जो बड़ी संख्या में बीजीपी अपडेट भेजने से जुड़े हैं। वर्तमान में मेरे पास मेरे पारगमन सत्रों के लिए बीजीपी संदेशों की संख्या पर आंकड़े हैं (कोई असामान्य गतिविधि नहीं दिखा रहे हैं) और कई पीजीपी सत्रों के साथ पीरिंग लैन पर यह समस्याग्रस्त सत्र (एस) को स्पॉट करना आसान नहीं है अगर मुझे ग्राफ़ बनाना चाहिए सभी सत्र।

मेरे प्रश्न हैं:

  • रूटिंग इंजन पर सीपीयू लोड में इस वृद्धि के कारण को खोजने के लिए मुझे कोई अन्य चीज़ों की जाँच करनी चाहिए?
  • मैं आसानी से कैसे पता लगा सकता हूं कि कौन से सत्र इन समस्याओं का कारण बन रहे हैं (यदि मेरी धारणा सही है)? बीजीपी ट्रेसटॉप्स को सक्षम करना भारी मात्रा में डेटा उत्पन्न करता है, लेकिन मुझे यकीन नहीं है कि यह मुझे कोई वास्तविक जानकारी देता है।

जवाबों:


17

जुनिपर नॉलेज सेंटर में आपके लिए कुछ उपयोगी जानकारी हो सकती है ।

यदि RPD उच्च CPU का उपभोग कर रहा है, तो निम्नलिखित जांच करें और निम्नलिखित मापदंडों को सत्यापित करें:

  • इंटरफेस की जांच करें: जांचें कि क्या कोई इंटरफेस राउटर पर फड़फड़ा रहा है। यह शो लॉग संदेशों के आउटपुट को देखते हुए और इंटरफेस इंटरफेस ge-x / y / z व्यापक कमांड को देखकर सत्यापित किया जा सकता है। समस्या क्यों वे फड़फड़ा रहे हैं; यदि संभव हो तो आप लिंक अप और लिंक डाउन के लिए होल्ड-टाइम को सक्षम करने पर विचार कर सकते हैं।

  • जाँच करें कि क्या शो लॉग संदेशों के आउटपुट को देखकर इंटरफेस या किसी भी FPC / PIC से संबंधित त्रुटि संदेश हैं।

  • मार्गों की जाँच करें: शो मार्ग सारांश के आउटपुट को देखकर राउटर द्वारा सीखे गए मार्गों की कुल संख्या सत्यापित करें। जांचें कि क्या यह अधिकतम सीमा तक पहुंच गया है।

  • RPD कार्यों की जाँच करें: पहचानें कि क्या प्रक्रिया को व्यस्त रख रही है। पहले सेट टास्क अकाउंटिंग को सक्षम करके इसे चेक किया जा सकता है। महत्वपूर्ण: यह स्वयं सीपीयू और इसके उपयोग पर भार बढ़ा सकता है; इसलिए जब आप आवश्यक आउटपुट संग्रह के साथ किया जाता है तो इसे बंद करना न भूलें। फिर शो टास्क अकाउंटिंग चलाएं और उच्च सीपीयू समय के साथ थ्रेड की तलाश करें:

    user@router> show task accounting
    Task                       Started    User Time  System Time  Longest Run
    Scheduler                   146051        1.085        0.090        0.000
    Memory                           1        0.000            0        0.000  <omit>
    BGP.128.0.0.4+179              268       13.975        0.087        0.328
    BGP.0.0.0.0+179      18375163 1w5d 23:16:57.823    48:52.877        0.142
    BGP RT Background              134        8.826        0.023        0.099
    

पता करें कि एक धागा, जो एक विशेष उपसर्ग या एक प्रोटोकॉल से संबंधित है, उच्च सीपीयू क्यों ले रहा है।

  • आप यह भी जांच सकते हैं कि शेल कमांड के आउटपुट को देखते हुए मार्ग दोलन (या मार्ग मंथन) कर रहे हैं: %rtsockmon –t

  • RPD मेमोरी की जाँच करें। कुछ समय के लिए उच्च मेमोरी उपयोग अप्रत्यक्ष रूप से उच्च सीपीयू को जन्म दे सकता है।


1
RPD ब्लैकबॉक्स से थोड़ा परेशान है। महान सुझाव rtsockmon -t और शो टास्क अकाउंट के शीर्ष पर, मैं संभावित उपयोगी उपकरण के रूप में 'शो krt कतार' भी जोड़ना चाहूंगा।
यति

शो krt कतार आपको किसी भी रूट अपडेट को दिखाएगा जो डेटा प्लेन को कंट्रोल करता है। आपको ज्यादातर समय कुछ भी नहीं देखना चाहिए। जब एक फ्लैप होता है तो यह कुछ समय के लिए कतारबद्ध रह सकता है
मध्याह्न

PR836197 के कारण यह वस्तुतः घंटों में हो सकता है :(
ytti

उन बिंदुओं की एक जोड़ी का उल्लेख करना बहुत स्पष्ट था (इंटरफेसों को फड़फड़ाना, लॉग में त्रुटियों), लेकिन rtsockmon और कार्य लेखांकन सुझाव व्यावहारिक थे। ऐसा लगता है कि एसएनएमपी के लिए बहुत सारे सीपीयू चक्र का उपयोग किया जाता है, इसलिए अगला पता लगा रहा है कि कौन से बॉक्स और उपकरण इन राउटरों को मतदान कर रहे हैं।
तून विंक

1
क्षमा करें यदि वे बहुत स्पष्ट थे, तो मैं एक समर्थन पृष्ठभूमि से आया हूं, जहां एक उपयोगकर्ता को यह जांचने के लिए मिल रहा है कि क्या उसका प्लग इन एक परेशानी था!
Artanix

2

मुझे पता है कि यह धागा पुराना है लेकिन संपूर्णता के लिए:

यदि उच्च सीपीयू बेतरतीब ढंग से होता है और आप इस प्रक्रिया को निर्धारित करने में सक्षम नहीं हैं, तो इससे हम नीचे की स्क्रिप्ट बना सकते हैं।

इस स्क्रिप्ट के साथ हम उस प्रक्रिया को व्यापक रूप से पकड़ने जा रहे हैं जब एक प्रक्रिया सामान्य या अपेक्षित सीमा से अधिक हो जाती है, इससे किसी भी ट्रैफ़िक को बाधित नहीं किया जाना चाहिए लेकिन एक मेगावाट की सिफारिश की जाती है। हालाँकि मैं देख रहा हूँ कि आपने इसे RPD होने के लिए संकुचित कर दिया है।

snmp {
    health-monitor {
        interval 30;
        rising-threshold 60;
        falling-threshold 50;
    }
}

event-options {
    policy MONITOR-CPU {
        events snmpd_health_mon_thresh_cross;
        attributes-match {
            snmpd_health_mon_thresh_cross.event-name matches "Health Monitor.+CPU.+rising";
        }
        then {
            execute-commands {
                commands {
                    "show system processes extensive";
                }
                output-filename cpu-processes;
                destination local-flash;
                output-format text;
            }
        }                               
    }
    destinations {
        local-flash {
            archive-sites {
                /var/tmp;
            }
        }
    }
}

प्रदर्शन सेट>

set snmp health-monitor interval 30
set snmp health-monitor rising-threshold 60
set snmp health-monitor falling-threshold 50
set event-options policy MONITOR-CPU events snmpd_health_mon_thresh_cross
set event-options policy MONITOR-CPU attributes-match snmpd_health_mon_thresh_cross.event-name matches "Health Monitor.+CPU.+rising"
set event-options policy MONITOR-CPU then execute-commands commands "show system processes extensive"
set event-options policy MONITOR-CPU then execute-commands output-filename cpu-processes
set event-options policy MONITOR-CPU then execute-commands destination local-flash
set event-options policy MONITOR-CPU then execute-commands output-format text
set event-options destinations local-flash archive-sites /var/tmp

यदि आपने किसी भी ddos ​​संदेशों की सूचना दी है, तो क्या आपने जाँच की है? आप निम्न आदेश चला सकते हैं:

show ddos-protection protocols statistics brief
show ddos-protection statistics
show ddos-protection version

फिर आप जो देखते हैं उसके आधार पर इसे उदाहरण के लिए संकुचित किया जा सकता है:

show ddos-protection protocols ttl statistics
show ddos-protection protocols ttl violations
show ddos-protection protocols ttl flow-detection detail  */*this cm needs prior config*/*

जूनिपर भी KB22637 के तहत इस प्रकार के मुद्दों के लिए एक संग्रह सूची है

उच्च CPU CLI कमांड

set cli timestamp
show chassis routing-engine (multiple snapshots, atleast 5)
show system processes extensive (multiple snapshots atleast 5)
show system users
show system connections
show system statistics

कार्य लेखांकन चालू करें और कार्य लेखांकन विवरण आउटपुट (30 सेकंड के अंतराल के साथ तीन बार) एकत्र करें। समाप्त होने के बाद इसे बंद करना न भूलें।

set task accounting on 
show task accounting detail
set task accounting off

show task memory detail
show task memeory summary
show task io
show task history
show task statistics
show task job
show task jobs
show krt queue
show krt state

लॉग्स

Traceoptions से ऊपर चरण 1 में निर्दिष्ट के रूप में पुरालेख / संस्करण / लॉग

user@router# show routing-options 
traceoptions { 
file routing-trace size 10m files 20 world-readable; 
flag task; 
flag state; 
flag timer; 
}

यदि आप एक पुराना संस्करण चला रहे हैं, जो बग के लिए प्रवण है, तो आप कोड के जीवन समर्थन की जांच करना चाहते हैं:

http://www.juniper.net/support/eol/junos.html

एक अन्य बिंदु जो एक वेक्टर हमला हो सकता है का उल्लेख करने के लिए अवांछित अपवाद यातायात से अपने आरई की रक्षा नहीं कर रहा है। सुनिश्चित करें कि आपके पास लूपबैक के तहत फ़ायरवॉल फ़िल्टर है।

मैंने राउटर पर पिछली लिपियों में देखा है कि उच्च सीपीयू सुनिश्चित नहीं है अगर आरपीडी मेरे विचार में आया है, लेकिन यह कुछ ऐसा है जिसे आप अनदेखा नहीं करना चाहते हैं।

यदि आप लॉग में देखते हैं तो RPD_MPLS_PATH_BANDWIDTH_CHANGE के साथ कई हिट आप एक बहुत ही आक्रामक समायोजन-अंतराल का उपयोग कर सकते हैं

"सिस्टम कतार दिखाएँ" पर किसी भी बूंद की जाँच करें: यह कर्नेल कतार है, कुछ सुराग दिखाई दे सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.