से प्रदर्शन काउंटर इंस्टेंस नाम (w3wp # XX) प्राप्त करें। मैं .NET/Process प्रदर्शन काउंटर का उपयोग करके किसी वेब पेज पर कुछ मेमोरी आंकड़े (वर्किंग सेट, जीसी इत्यादि) प्रदर्शित करना चाहता हूं। दुर्भाग्यवश, यदि उस सर्वर पर एकाधिक एप्लिकेशन पूल हैं, तो वे इंडेक्स (# 1, # 2 इत्यादि) का उपयोग करके अलग-अलग होते हैं, लेकिन मुझे नहीं पता कि उस #xx इंडेक्स में एक प्रक्रिया आईडी (जो मेरे पास है) से मेल खाना है। क्या कोई प्रोग्रामेटिक तरीका है (एएसपी.नेट वेब पेज से)?एएसपी.NET कार्यकर्ता प्रक्रिया आईडी
उत्तर
गूगल पर पहली हिट:
Multiple CLR performance counters appear that have names that resemble "W3wp#1"
कई ASP.NET वर्कर प्रक्रियाओं जब चल रहे हैं, साझा भाषा क्रम (CLR) प्रदर्शन काउंटरों ऐसे नाम हैं जो समान होगा "w3wp # 1 "या " W3sp # 2 "और इसी तरह। यह को .NET Framework 2.0 में काउंटर नामक काउंटर नामक .NET CLR मेमोरी प्रदर्शन ऑब्जेक्ट में शामिल करने के लिए उपचार किया गया था। यह काउंटर उदाहरण के लिए प्रक्रिया आईडी प्रदर्शित करता है। आप इस काउंटर का उपयोग पर कर सकते हैं सीएलआर प्रदर्शन काउंटर जो किसी प्रक्रिया से जुड़ा हुआ है निर्धारित करता है।
इसके अलावा KB 281884डिफ़ॉल्ट रूप से, प्रदर्शन मॉनिटर (Perfmon.msc) प्रदर्शित करता है कई प्रक्रियाओं में प्रक्रियाओं गणना करके एक ही नाम है कि जिस तरह से निम्नलिखित:
प्रक्रिया # 1 प्रक्रिया # 2 प्रक्रिया # 3
प्रदर्शन मॉनिटर भीप्रदर्शित कर सकता हैरास्ता निम्नलिखित में नाम के लिए प्रक्रिया ID (पीआईडी) जोड़कर इन प्रक्रियाओं:
Process_PID
दरअसल यह सही नहीं है - नामकरण की तरह दिखता है प्रक्रिया, प्रक्रिया # 1, प्रक्रिया # 2। पोस्टफिक्स के साथ वहां एक है। –
private static string GetProcessInstanceName(int pid)
{
PerformanceCounterCategory cat = new PerformanceCounterCategory("Process");
string[] instances = cat.GetInstanceNames();
foreach (string instance in instances)
{
using (PerformanceCounter cnt = new PerformanceCounter("Process",
"ID Process", instance, true))
{
int val = (int) cnt.RawValue;
if (val == pid)
{
return instance;
}
}
}
throw new Exception("Could not find performance counter " +
"instance name for current process. This is truly strange ...");
}
मुझे लगता है कि यह तेज़ है: प्रक्रिया पी = Process.tGetProcessById (पिड); स्ट्रिंग उदाहरण = प्रक्रिया। प्रोसेसनाम; – pistacchio
http://weblogs.thinktecture.com/ingo/2004/06/getting-the-current-process-your-own-cpu-usage.html –
@pistacchio No से कॉपी किया गया है, जो आपको गलत मान देता है यदि वहां है प्रक्रिया के एक से अधिक उदाहरण। –
chiru द्वारा उदाहरण के लिए एक विशिष्ट मामले में काम नहीं करता है - जब आपके पास उसी प्रोग्राम के दो संस्करण, वही नामित हैं, और एक .NET नहीं है और आप non-.net संस्करण के बाद .NET संस्करण प्रारंभ करते हैं। .Net संस्करण को applicaion # 1 नाम दिया जाएगा, लेकिन जब आप इस नाम का उपयोग कर सीएलआर परफ काउंटर तक पहुंचते हैं, तो काउंटर पर इंस्टेंस नामों का नाम # 1 के साथ होता है, इसलिए आपको असफलता मिलती है।
निक।
भले ही रजिस्ट्री सेटिंग्स को बदलना काफी आसान लगे, दुर्भाग्यवश हम में से अधिकांश को सर्वर पर ऐसा करने का अधिकार नहीं है (या हम इसे छूना नहीं चाहते हैं!)। उस मामले में, एक छोटा सा कामकाज है। मैंने इस here के बारे में ब्लॉग किया है।
मुझे पता है कि इसका उत्तर पहले दिया गया है, लेकिन केवल पूर्ण कार्य कोड के लिए मैं इस समाधान को पोस्ट कर रहा हूं।कृपया विधि इस श्रृंखला में M4N द्वारा प्रस्तुत के आधार पर इस कोड को नोट करें:
public static long GetProcessPrivateWorkingSet64Size(int process_id)
{
long process_size = 0;
Process process = Process.GetProcessById(process_id);
if (process == null) return process_size;
string instanceName = GetProcessInstanceName(process.Id);
var counter = new PerformanceCounter("Process", "Working Set - Private", instanceName, true);
process_size = Convert.ToInt32(counter.NextValue())/1024;
return process_size;
}
public static string GetProcessInstanceName(int process_id)
{
PerformanceCounterCategory cat = new PerformanceCounterCategory("Process");
string[] instances = cat.GetInstanceNames();
foreach (string instance in instances)
{
using (PerformanceCounter cnt = new PerformanceCounter("Process", "ID Process", instance, true))
{
int val = (int)cnt.RawValue;
if (val == process_id)
return instance;
}
}
throw new Exception("Could not find performance counter ");
}
इसके अलावा, आप एक ही प्रक्रिया के कई उदाहरण की कुल स्मृति पाने के लिए एक निम्नलिखित के साथ ऊपर तरीकों का उपयोग करना चाहते हैं:
public static long GetPrivateWorkingSetForAllProcesses(string ProcessName)
{
long totalMem = 0;
Process[] process = Process.GetProcessesByName(ProcessName);
foreach (Process proc in process)
{
long memsize = GetProcessPrivateWorkingSet64Size(proc.Id);
totalMem += memsize;
}
return totalMem;
}
- 1. क्या मुझे किसी वेब एप्लिकेशन में कार्यकर्ता प्रक्रिया की प्रक्रिया आईडी मिल सकती है?
- 2. गलत "डीबगिंग शुरू करने में असमर्थ ... एएसपी.NET कार्यकर्ता प्रक्रिया से अटैच करने में असमर्थ" .NET
- 3. प्रक्रिया आईडी से प्रक्रिया आईडी कैसे प्राप्त करें?
- 4. प्रक्रिया आईडी C++
- 5. log4net प्रक्रिया आईडी जानकारी
- 6. जावास्क्रिप्ट में आईडी द्वारा संदर्भ एएसपी.NET नियंत्रण?
- 7. एएसपी.NET
- 8. यूनिकॉर्न: किस कार्यकर्ता की प्रक्रिया का उपयोग करना है?
- 9. आईआईएस कार्यकर्ता प्रक्रिया को रीसायकल कब करता है?
- 10. आईआईएस कार्यकर्ता प्रक्रिया में RequestAququireState में फंसे अनुरोध
- 11. आईआईएस 7 के लिए कार्यकर्ता प्रक्रिया क्या है?
- 12. प्रक्रिया आईडी से प्रक्रिया संभाल कैसे प्राप्त करें?
- 13. एएसपी.Net
- 14. PHP डेमॉन/कार्यकर्ता वातावरण
- 15. सी # पृष्ठभूमि कार्यकर्ता
- 16. एएसपी.NET
- 17. प्रक्रिया की दादाजी आईडी कैसे प्राप्त करें
- 18. वर्तमान प्रक्रिया आईडी कैसे प्राप्त करें?
- 19. एएसपी.NET
- 20. पृष्ठभूमि कार्यकर्ता
- 21. Sidekiq कार्यकर्ता
- 22. रेस्क्यू कार्यकर्ता
- 23. पृष्ठभूमि कार्यकर्ता निरस्त
- 24. पृष्ठभूमि कार्यकर्ता त्रुटि
- 25. एएसपी.NET
- 26. एएसपी.NET सदस्यता प्रदाता में वर्तमान एप्लिकेशन आईडी प्राप्त करें
- 27. एएसपी.NET 3.5 सत्र आईडी का आकार क्या है?
- 28. एक बेहतर तरीका है? एएसपी.NET नियंत्रण ढूंढना, उनकी आईडी
- 29. एचटीएमएल 5 ईमेल इनपुट आईडी और RUNAT = "सर्वर" एएसपी.NET 4
- 30. रेस्क्यू: एक कार्यकर्ता प्रति कतार
यहां एक ब्लॉग पोस्ट है जो इस परिदृश्य पर विस्तार से चर्चा करता है: http://weblog.west-wind.com/posts/2014/Sep/27/Capturing- प्रदर्शन - काउंटर- डेटा-for-a- प्रोसेस-by -Process-ईद। मूल रूप से आपको 'इंस्टेंस नाम' पुनर्प्राप्त करने के लिए एक और प्रदर्शन काउंटर का उपयोग करने की आवश्यकता होती है और फिर उस नाम के साथ अपने प्रक्रिया काउंटर चलाएं। –