मैक ओएस एक्स पर प्रक्रिया / धागा निर्माण और विनाश इतिहास या खाता बही


0

मैं अपने मैक में कुछ अजीब थ्रेडिंग व्यवहार देख रहा हूं (योसेमाइट 10.10.4)। थ्रेड्स की संख्या बढ़ जाती है और फिर वापस नीचे जाती है। कभी-कभी यह बहुत अधिक रहता है, इस प्रकार संदेशों maxprocको पार कर जाता है और fork: Resource temporarily unavailable2048 तक बढ़ने के बाद भी।

यह देखते हुए कि धागे की गिनती होती है maxproc, मैं यह देखना चाहूंगा कि यह थ्रेड कहां से आ रहा है।

top, htopऔर glancesकेवल स्नैपशॉट प्रदान करते हैं, लेकिन मुझे समस्या की सटीक पहचान करने के लिए स्वामित्व और पितृत्व सहित थ्रेड निर्माण और विनाश के टाइमस्टैम्प्ड लॉग की आवश्यकता होती है।

कोई विचार?

EDIT 1: संभावित प्रश्न के रूप में Google Chrome पर मेरे संदर्भ को हटा दिया गया, ताकि प्रश्न को थ्रेड इतिहास या खाता बही पर केंद्रित रखा जा सके।


1
खैर, पहले, वास्तव में थ्रेड लीक जैसी कोई चीज नहीं है। थ्रेड्स सीमित संसाधन नहीं हैं। दूसरा, स्क्रिप्ट प्राप्त करने या छवि या स्टाइलशीट को लोड करने या आप पर जासूसी करने वाले बाज़ारिया को यह बताने का हर अनुरोध कि आप किसी चीज़ पर गए हैं, या क्लाइंट साइड एनालिटिक्स अपडेट इत्यादि, एक थ्रेड उत्पन्न करता है। आधुनिक पृष्ठ लोड करने के लिए अधिकांश ब्राउज़रों के लिए 10 थ्रेड से कम का उपयोग करना असामान्य होगा। थ्रेड निर्माण और विनाश अर्ध-महंगा है, इसलिए सबसे भारी अतुल्यकालिक एप्लिकेशन पूल थ्रेड हैं और बाद में उपयोग के लिए उन्हें चारों ओर रखते हैं। तो आपकी वास्तविक समस्या क्या है? धागे "भस्म" नहीं हैं। अनंत सूत्र हैं।
फ्रैंक थॉमस

1
CONT। एक थ्रेड निर्देश की एक धारा का प्रतिनिधित्व करता है, इसलिए जैसे कि, यह एक ऐप के प्रसंस्करण की सबसे छोटी और सबसे परमाणु इकाई है। इसका मतलब है कि हर प्रक्रिया को कम से कम एक धागे के रूप में निष्पादित किया जाता है। इस स्थिति में, आपके थ्रेड्स सभी बेकार हैं, वे कुछ भी निष्पादित नहीं कर रहे हैं, जैसा कि इन प्रक्रियाओं के लिए कम या गैर-मौजूद सीपीयू उपयोग से स्पष्ट है। यह एक धागा सीपीयू का उपभोग नहीं कर रहा है, तो यह मौजूद नहीं हो सकता है, बाद में इसे फिर से सहेजने वाले काम की थोड़ी मात्रा को छोड़कर, आपको बचाएगा, इसलिए न तो इसे फेंकने का कोई कारण है, और न ही एक कारण है कि इस प्रक्रिया का संबंध है कम से कम 63 धागे पैदा हुए।
फ्रैंक थॉमस

हां, मुझे पता है कि यह एक धागा क्या है, लेकिन लब्बोलुआब यह है कि मैक ओएस एक्स और * निक्स कर्नेल में, वे गिनती ulimitऔर sysctlसीमाएं हैं। यहाँ जहाँ मेरा सिस्टम एक सीमा तक मार कर रहा है, संभवतः एक सहज अनुप्रयोग के कारण, और इसीलिए मैं यह निगरानी करना चाहूँगा कि समस्या को कम करने के लिए वह गतिविधि कहाँ से आ रही है। blog.ghostinthemachines.com/2010/01/19/… stackoverflow.com/questions/13009632/…
15

एक अंतर्निहित / आसान तरीका नहीं है, लेकिन dtrace को आपके द्वारा वांछित जानकारी को उजागर करना चाहिए, लेकिन यह एक बहुत बड़ा वर्सेटाइल टूल है, इसलिए इसमें सीखने की अवस्था थोड़ी है, और इसके लिए कुछ शोध की आवश्यकता होगी। यहां शुरू करने के लिए एक अच्छी जगह हो सकती है: docs.oracle.com/cd/E18752_01/html/819-5488/gcggv.html वैकल्पिक रूप से, रोलैंड स्मिथ का जवाब यहां आपको कम से कम यह निर्धारित करने का एक तरीका सुझा सकता है कि पीआईडी ​​/ पीपीआईडी ​​बनाए जा रहे हैं। जैसा कि वे दिखाते हैं: stackoverflow.com/questions/14269891/… । सौभाग्य।
फ्रैंक थॉमस

सूचक के लिए धन्यवाद। मुझे लगता है कि आपको ऊपर अपनी टिप्पणी सही करनी चाहिए, @FrankThomas। (1) थ्रेड्स सीमित संसाधन नहीं हैं => यदि वे ओएस द्वारा कैप किए गए हैं तो वे हो सकते हैं। यूनिक्स प्रणालियों में, कोई भी सेट कर सकता maxprocहै unlimited, लेकिन मैक ओएस एक्स में यह संभव नहीं है और यह 2048 तक छाया हुआ है, इस प्रकार थ्रेड्स की संख्या स्वाभाविक रूप से सीमित है जो उन्हें एक सीमित संसाधन बनाती है । (2) HTTP ब्राउज़र से चित्र, CSS आदि लाने के लिए अनुरोध करता है, प्रत्येक नया धागा उत्पन्न नहीं करता है ! धागे का उपयोग थ्रेडपूल के माध्यम से किया जाता है, जैसे आप बाद में बताते हैं। आप इसे भी सही करना चाह सकते हैं। और शायद एक
डाउनवोट को

जवाबों:


1

मैं execsnoopउपकरण के लिए कुछ अंतर्दृष्टि इकट्ठा करने में सक्षम था । मैन पेज से वर्णन:

निष्पादित नई प्रक्रियाओं का विवरण निष्पादित करता है क्योंकि वे निष्पादित होते हैं। यूआईडी, पीआईडी ​​और तर्क सूची जैसे विवरण मुद्रित होते हैं।

उदाहरण आउटपुट:

[raul@~/bitbar$] sudo execsnoop -v
STRTIME                UID    PID   PPID ARGS
2016 Jan 14 17:56:09     0      1      0 launchd
2016 Jan 14 17:56:09   501  90311      1 influxd
2016 Jan 14 17:56:16   501  90312    321 kcc
2016 Jan 14 17:56:16     0      1      0 launchd
2016 Jan 14 17:56:16     0  90313      1 kcm
2016 Jan 14 17:56:19     0      1      0 launchd
2016 Jan 14 17:56:19   501  90314      1 influxd

execsnoopDTrace का उपयोग करता है , और मुझे यह बेहतरीन पोस्ट कुछ अन्य लिपियों / उपकरणों के साथ मिली: http://dtrace.org/blogs/brendan/2011/10/10/top-10-dtrace-scripts-for-mac-os-x/

मैक ओएस एक्स (डार्विन) और * निक्स कर्नेल में, थ्रेड्स को प्रक्रियाओं के रूप में दर्शाया जाता है, और इसीलिए इसकी गिनती ulimitऔर sysctlसीमाएं होती हैं।


-2

मैक से: कांटा: संसाधन अस्थायी रूप से अनुपलब्ध है

फ़ोल्डर को संदर्भित करके हल स्क्रिप्ट या उपयोगिता स्थित है।

उदाहरण के लिए: फ़ोल्डर से आपको स्क्रिप्ट या उपयोगिता चलाने की आवश्यकता है:

/ usr / लोकल / ऑप्ट / डार्ट / लिबेक्सिक / बिन / पब ग्लोबल एक्टीवेशन स्टेजहैंड

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