অ্যাপ পুল মেমরির সীমাগুলিকে সম্মান করে না


8

আমি একটি উত্তরাধিকার সূত্রপাত করছি। নেট অ্যাপ্লিকেশনটিতে যা মেমরি ফাঁস করে। রান আউট মেমোরির পরিস্থিতি চেষ্টা এবং প্রশমিত করার জন্য, আমি অ্যাপ্লিকেশন পুলের মেমরির সীমা 50000 বিবি থেকে 500000 কেবি (500 এমবি) এর মধ্যে রেখেছি তবে অ্যাপ্লিকেশন পুলটি সেটিংসগুলিকে সম্মান করে না বলে আমি লগইন করতে পারি এবং শারীরিক দৃশ্য দেখতে পারি এটির জন্য মেমরি (5 গিগাবাইট এবং সর্বোপরি কোনও মান যাই হোক না কেন)। এই অ্যাপ্লিকেশনটি সার্ভারটিকে হত্যা করছে এবং অ্যাপ পুলটি কীভাবে সামঞ্জস্য করা যায় তা আমি নির্ধারণ করতে পারি না। এই অ্যাপ্লিকেশন পুলটি মেমরির 500 মিমি অতিক্রম না করে তা নিশ্চিত করার জন্য আপনি কোন সেটিংসের পরামর্শ দেন।

এখানে একটি উদাহরণ রয়েছে, অ্যাপ পুলটি 3.5 গিগাবাইট ব্যবহার করছে

প্রক্রিয়া তালিকা

অ্যাপ পুল

সুতরাং, সার্ভারটি আবার ক্র্যাশ হয়ে গেছে, এবং এখানেই:

এখানে চিত্র বর্ণনা লিখুন

কম মেমোরি সীমা সহ একই অ্যাপ্লিকেশন পুল, 1000 টি পুনর্ব্যবহারযোগ্য অনুরোধ যা প্রতি দুই বা তিন মিনিটে রিসাইকেল ইভেন্টের কারণ হয়ে থাকে তবে কখনও কখনও এটি কেবল পালিয়ে যায়।

আমি এমন কোনও সরঞ্জামের জন্যও উন্মুক্ত রয়েছি যা এই প্রক্রিয়াটি পর্যবেক্ষণ করতে পারে (হয় প্রতি 30 সেকেন্ডে কোনও কাজ বা পরিষেবা হিসাবে চালানো) এবং এটি কিছুটা সীমা ছাড়িয়ে গেলে এটি হত্যা করতে পারে।


আপনি আরও ভাল ফলাফল পান কিনা তা দেখার জন্য মেমরি সীমা চেয়ে সময় সীমাটি কনফিগার করার চেষ্টা করুন। এই দেখুন
নাথান সি

আমি বাস্তবে এটি 100 টি অনুরোধের পরে পুনর্ব্যবহারের জন্য সেট করেছিলাম যা ভাল কাজ করে বলে মনে হচ্ছে তবে সব মিলিয়ে মনে হচ্ছে অ্যাপ্লিকেশন পুলের কিছু সেটিংস আমার প্রত্যাশার মতো কাজ করে না।
লুচুমা

আপনার পুনর্ব্যবহারযোগ্য সক্ষম করার জন্য ইভেন্টলগিং আছে? সেখানে কিছু আছে?
মিশেল জেড

ব্যক্তিগত মেমরি সীমা এবং পুনর্ব্যবহার সম্পর্কে প্রতি 2 মিনিটে একটি এন্ট্রি থাকে। সমস্যাটি হ'ল প্রতি কয়েকদিন পরেই সার্ভারের স্মৃতিশক্তি ফুরিয়ে যায় এবং যতবার আমি যাচাই করি, এই অ্যাপ্লিকেশন পুলটিতে (গ্রাফিক দেখানো হয়েছে) গিগাবাইট অফ র‌্যাম ব্যবহৃত হয়েছে।
লুচুমা

উত্তর:


2

আমি এই পোস্টটি পেয়েছি কারণ আমি সীমাবদ্ধতা সীমাবদ্ধ করা হচ্ছে না যেখানে অনুরূপ একটি উত্তর দিতে সংগ্রাম করছি। আইআইএস ওয়েবলিমিটগুলি সম্মানিত হচ্ছে না দেখুন ।

তবে, আমি আপনার সমস্যার জন্য ছুরিকাঘাত করতে পারি। নীচে সি # কোড চেষ্টা করুন। আপনি পাওয়ারশেল দিয়েও এটি করতে পারেন। আপনার এডমিন অধিকার সহ এটি চালানো দরকার।

 static void Main(string[] args)
    {

        string appPoolName = args[0];
        int memLimitMegs = Int32.Parse(args[1]);
        var regex = new System.Text.RegularExpressions.Regex(".*w3wp.exe \\-ap \"(.*?)\".*");

        //find w3wp procs....
        foreach (var p in Process.GetProcessesByName("w3wp"))
        {

            string thisAppPoolName = null;

            try
            {
                //Have to use WMI objects to get the command line params...
                using (var searcher = new ManagementObjectSearcher("SELECT CommandLine FROM Win32_Process WHERE ProcessId = " + p.Id))
                {
                    StringBuilder commandLine = new StringBuilder();
                    foreach (ManagementObject @object in searcher.Get())
                    {
                        commandLine.Append(@object["CommandLine"] + " ");
                    }

                    //extract the app pool name from those.
                    var r = regex.Match(commandLine.ToString());
                    if (r.Success)
                    {
                        thisAppPoolName = r.Groups[1].Value;
                    }

                    if (thisAppPoolName == appPoolName)
                    {
                        //Found the one we're looking for. 
                        if (p.PrivateMemorySize64 > memLimitMegs*1024*1024)
                        {

                            //it exceeds limit, recycle it using appcmd. 

                            Process.Start(Path.Combine(System.Environment.SystemDirectory , "inetsrv", "appcmd.exe"), "recycle apppool /apppool.name:" + appPoolName);

                            Console.WriteLine("Recycled:" + appPoolName);
                        }
                    }
                }
            }
            catch (Win32Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
    }

আমি আগামীকাল এটি চেষ্টা করে দেখব কী হয়।
লুচুমা

আমি স্ক্রিপ্ট চেষ্টা করেছি এবং এটি প্রক্রিয়াটি খুঁজে পায় না।
লুচুমা

এবং আপনি এটি পুরো অ্যাডমিন অধিকারের সাথে চালাচ্ছেন? আপনি কি আপনার অ্যাপ পুলের জন্য টাস্ক ম্যানেজারে w3wp দেখতে পাচ্ছেন?
নিক

হ্যাঁ, আমি মন্তব্য পোস্ট করার পরে এটি বুঝতে পেরেছি। আমি অ্যাপ্লিকেশন পুলটিকে পুনর্ব্যবহারের পরিবর্তে প্রক্রিয়াটি মেরে ফেলতে স্ক্রিপ্টটি পরিবর্তন করেছি কারণ মেমরি ফাঁস সমস্ত স্মৃতি গ্রাস করলে রিসাইকেল বোমা ফাটিয়ে দেবে। তত্ত্বের ক্ষেত্রে এটি কাজ করা উচিত যখন ফুটোটি হাইওয়াইরে যায় (আশায়)।
লুচুমা

আমি যদি আপনি থাকতাম তবে আমার দুটি দোরগোড়া থাকত, একটি পুনর্ব্যবহারযোগ্য (নিম্ন) এবং একটি হত্যার জন্য। আপনার অ্যাপের উপর নির্ভর করে আপনি কেবল হত্যা করলে আপনি ফ্লাইটে ডেটা হারাতে পারেন। খুশী হ'ল এটি কাজ করে।
নিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.