উইন্ডোজ সার্ভার 2008 আর 2 मेटाফাইল র‌্যাম ব্যবহার


33

আমার একটি সার্ভার রয়েছে যা 4 জিবি র‌্যামের সাথে উইন্ডোজ সার্ভার 2008 আর 2 এক্স 64 চালায় যা প্রায় 2 মিলিয়ন ফাইল হোস্ট করে, যার বেশিরভাগই চিত্র ফাইল।

এক সপ্তাহ ধরে আমি লক্ষ্য করেছি যে কম মেমরির কারণে ডিস্কে অতিরিক্ত পেজিংয়ের কারণে সার্ভারে থাকা অ্যাপ্লিকেশনগুলি ক্রলটিতে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে চলতে থাকা সমস্ত পরিষেবাগুলিতে এটির প্রভাব রয়েছে, কর্মক্ষমতা ইস্যু.

টাস্ক ম্যানেজারে তদন্ত করার পরে, আমি লক্ষ্য করেছি যে প্রায় 4 জিবি সমস্ত ব্যবহৃত ছিল কিন্তু আপনি যখন প্রসেস ট্যাবটি দেখেন তখন সেখানে উপস্থিত সমস্ত মেমরির যোগফল যোগ করে না এবং সর্বাধিক মাত্র 1.5 জিবি ব্যবহৃত হয় বলে মনে করা হয়।

গুগল সমাধান সমাধানের জন্য ব্যবহার করে, দেখা যাচ্ছে যে র‌্যামের বেশিরভাগটি "মেটাফিল" ব্যবহার করা হয়েছিল যা ফাইল সিস্টেমের ফাইলগুলির জন্য এনটিএফএস তথ্যের একটি ক্যাশে যাতে সিস্টেমটিকে আবার তথ্যের জন্য এমএফটি জিজ্ঞাসা করতে না হয়। এই ক্যাশেটি কখনই টাস্ক ম্যানেজারে "ক্যাশে" বা সিসিনটার্নালের র‌্যাম্যাপে "স্ট্যান্ডবাই" হিসাবে চিহ্নিত করা হয় না।

KB979149 হটফিক্স ইনস্টল করার জন্য একটি পরামর্শ ছিল কিন্তু এটি ইনস্টল করার চেষ্টা করার পরে, এটি বলে যে "এই আপডেটটি আপনার কম্পিউটারের জন্য প্রযোজ্য নয়"।

আমি এখনও অবধি কেবলমাত্র অস্থায়ী সমাধানগুলি পেয়েছি:

  1. সিসিন্টার্নাল থেকে "খালি সিস্টেম ওয়ার্কিং সেট" থেকে প্রতি 1-3 দিনে র্যামম্যাপ ব্যবহার করুন যা টাস্ক ম্যানেজারে ক্যাশেটিকে "স্ট্যান্ডবাই" এবং "ক্যাশে" হিসাবে চিহ্নিত করে যাতে র‌্যামটি অন্যান্য অ্যাপ্লিকেশন দ্বারা ব্যবহার করা যায়।
  2. মেশিনটি পুনরায় বুট করুন, যা এই সার্ভারটি পাবলিক ওয়েবসাইট পরিবেশন করায় অনাকাঙ্ক্ষিত।

এই মুহুর্তে আমি 2 টি সম্পাদন করতে যাচ্ছি যাতে এটি বিঘ্নের স্তরে পৌঁছতে না পারে every

আগে: (800 এমবি র‌্যাম ব্যবহৃত হয়েছে - অন্যান্য অ্যাপ্লিকেশনগুলি এই র‌্যামটি ব্যবহার করতে পারে না)

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

পরে: (800 এমবি র‌্যাম ক্যাশে হিসাবে চিহ্নিত হয়েছে - অন্যান্য অ্যাপ্লিকেশনের জন্য উপলব্ধ)

সুতরাং আপনার সকলের কাছে আমার প্রশ্ন হ'ল: এই মেটাফিলটির র‍্যাম ব্যবহার সীমাবদ্ধ করার জন্য কোনও পদ্ধতি কি এখানে বিদ্যমান আছে?


4
একটি সার্ভারে 4 গিগাবাইট র‌্যাম 2-2 মিলিয়ন ফাইল হোস্ট করে। আপনার র‌্যাম আপগ্রেড করুন বা আপনার র‌্যাম আপগ্রেড করুন।
পৌষকা

1
কিছু মনে করবেন না, সিসিন্টার্নালসের ক্যাশেসেট আমাকে ক্যাশে আকার নির্ধারণ করতে দেয়, বর্তমানে এটি বিরতিতে চালানো এবং এটি করা আমার জন্য সমস্যাটি সমাধান করেছে!
al2k4

6
র‌্যাম যুক্ত করা সমস্যার সমাধান করে না। মেটাফাইল ক্যাশে এটিও পূরণ করবে। আমি একটি ভিএমওয়্যার অতিথির সাথে এটি করার চেষ্টা করেছি যা 4 জিবি দিয়ে শুরু হয়েছিল এবং এটি 12 জিবি করে বাড়িয়েছে এবং একই জিনিস ঘটে the সমস্যাটি হ'ল এই মেমরিটি ক্যাশে উদ্দেশ্যে, তবে উইন্ডোজ অনুযায়ী ক্যাশে হিসাবে চিহ্নিত করা হয় না। এটি ভুলভাবে অ্যাক্টিভ / ইন ইউজ মেমোরি হিসাবে চিহ্নিত হয়েছে এবং দুর্ভাগ্যক্রমে, এটি বাড়ার সাথে সাথে রিয়েল অ্যাকটিভ / ইন ব্যবহার মেমোরি বাস্তব প্রোগ্রামগুলি দ্বারা ব্যবহৃত এবং ডিস্কে পেজিং শুরু করে। শারীরিক র‍্যাম যখন পূরণ করে সবকিছু হ্রাস হয়ে যায় এবং উল্লিখিত মূল পোস্ট হিসাবে আপনাকে দুটি সমাধানের একটি করতে হবে।

@ al2k4 যদি আপনার প্রশ্নটি সমাধান হয়ে যায়, দয়া করে সঠিক উত্তরের পাশে চেক চিহ্নটি ক্লিক করে সমাধান হিসাবে চিহ্নিত করুন। সার্ভার ফল্ট আপনাকে স্বাগতম !
মাইকেল হ্যাম্পটন

উত্তর:


16

এই ইস্যুটি মোকাবেলার জন্য সর্বোত্তম পদ্ধতি হ'ল এমপি KB976618 নির্দেশ দেওয়ার জন্য ব্যবহৃত নির্দেশনাSetSystemFileCacheSize হিসাবে API ব্যবহার করা

পর্যায়ক্রমে ক্যাশে সাফ করবেন না

SetSystemFileCacheSizeপর্যায়ক্রমে ক্যাশে সাফ করার চেয়ে ফাংশন ব্যবহার করা কর্মক্ষমতা এবং স্থায়িত্বকে উন্নত করে। পর্যায়ক্রমে ক্যাশে সাফ করার ফলে প্রচুর পরিমাণে মেটাফায়াল এবং অন্যান্য তথ্য মেমরি থেকে মুছে ফেলা হবে এবং উইন্ডোজকে এইচডিডি থেকে প্রয়োজনীয় তথ্য পুনরায় পড়তে হবে। এটি যখন আপনি ক্যাশে সাফ করেন তখনই বেশ কয়েক সেকেন্ডের জন্য পারফরম্যান্সে হঠাৎ এবং মারাত্মক ড্রপ তৈরি করে, এরপরে ভাল পারফরম্যান্স যা মেটাফিলের ডেটা দিয়ে মেমরি ভরিয়ে দেয় ধীরে ধীরে হ্রাস পায়।

SetSystemFileCacheSizeফাংশনটি ব্যবহার করা সর্বনিম্ন এবং সর্বাধিক সেট করে যার ফলে উইন্ডোজ অতিরিক্ত পুরানো মেটাফিল ডেটা স্ট্যান্ডবাই মেমোরি হিসাবে পতাকাঙ্কিত করবে যা সাধারণ ক্যাচিং ফাংশনগুলি বর্তমান সংস্থান চাহিদা এবং স্বাভাবিক ক্যাশে অগ্রাধিকার অনুসারে ব্যবহার করতে বা বাতিল করতে পারে। এটি প্রচলিত মেমরির প্রচুর পরিমাণে বজায় রেখে উইন্ডোজ অন্য কোনও কিছুর জন্য মেমরিটি ব্যবহার না করা থাকলে স্ট্যান্ডবাই ডেটা হিসাবে মেমরির হিসাবে স্ট্যান্ডবাই ডেটা হিসাবে মেমরিরূপে সর্বাধিক সেট করা সক্রিয় মেমরির চেয়ে আরও বেশি মেটাফিল ডেটা মঞ্জুরি দেয়। সিস্টেমের পারফরম্যান্সের বৈশিষ্ট্যগুলি সর্বদা ভাল রাখাই এটি আদর্শ পরিস্থিতি।

তৃতীয় পক্ষের প্রোগ্রামগুলি এমএস দ্বারা অসমর্থিত

আপনি যদি আমার মতো হয়ে থাকেন এবং আপনার প্রোডাকশন সার্ভারে কোনও অজানা তৃতীয় পক্ষের কাছ থেকে বাইনারি চালাতে না চান, আপনি একটি সরকারী এমএস সরঞ্জাম বা কিছু কোড চান যা আপনি এই সার্ভারগুলিতে চালনার আগে পরিদর্শন করতে পারেন। ২০০৮ আর -২ এর ডাইনক্যাচ সরঞ্জামটি এম কে থেকে কোনও সমর্থন মামলার জন্য অর্থ প্রদান না করে ব্যবহার করা প্রায় অসম্ভব এবং স্পষ্টভাবে, ২০০৮ এর কোডের উপর ভিত্তি করে, এটি টাস্কের জন্য অত্যধিক প্রস্ফুটিত বলে মনে হচ্ছে কারণ গতিময় আকারের জন্য উইন্ডোজ ইতিমধ্যে যুক্তিযুক্ত বিল্ট তৈরি করেছে ক্যাশে - এটি কেবলমাত্র আপনার সিস্টেমের জন্য উপযুক্ত সর্বাধিক জানতে হবে।

উপরোক্ত সকলের সমাধান

আমি একটি পাওয়ারশেল স্ক্রিপ্ট লিখেছিলাম যা bit৪ বিট মেশিনে কাজ করে। আপনাকে এটি উন্নত সুবিধাসমূহের প্রশাসক হিসাবে চালানো দরকার। আপনার এটি যেমন কোনও এক্স windows windows। উইন্ডো ভিস্তা / সার্ভার ২০০৮ পর্যন্ত চালানো এবং 10 / সার্ভার 2012 আর 2 কোনও পরিমাণ র‌্যাম সহ অন্তর্ভুক্ত করা উচিত। আপনার কোনও অতিরিক্ত সফ্টওয়্যার ইনস্টল করার দরকার নেই এবং ফলস্বরূপ আপনার সার্ভার / ওয়ার্কস্টেশনটি এমএস দ্বারা সম্পূর্ণ সমর্থনযুক্ত রাখুন supported

স্থায়ী হওয়ার জন্য আপনার এই স্ক্রিপ্টটি প্রতিটি বুটে উন্নত সুবিধাসমূহের সাথে চালানো উচিত। উইন্ডোজ টাস্ক শিডিয়ুলার এটি আপনার জন্য করতে পারে। যদি উইন্ডোজ ইনস্টলটি ভার্চুয়াল মেশিনের ভিতরে থাকে এবং আপনি সেই ভিএম-তে বরাদ্দ র‌্যামের পরিমাণ পরিবর্তন করেন তবে পরিবর্তনের পরে আপনার এটি চালানো উচিত।

সিস্টেমটি পুনরায় বুট না করে বা কোনও পরিষেবা বন্ধ না করে উত্পাদন ব্যবহারের সময় আপনি কোনও চলমান সিস্টেমে যে কোনও সময় চালাতে পারেন।

# Filename: setfc.ps1
$version = 1.1

#########################
# Settings
#########################

# The percentage of physical ram that will be used for SetSystemFileCache Maximum
$MaxPercent = 12.5

#########################
# Init multipliers
#########################
$OSBits = ([System.IntPtr]::Size) * 8
switch ( $OSBits)
{
    32 { $KiB = [int]1024 }
    64 { $KiB = [long]1024 }
    default {
        # not 32 or 64 bit OS. what are you doing??
        $KiB = 1024 # and hope it works anyway
        write-output "You have a weird OS which is $OSBits bit. Having a go anyway."
    }
}
# These values "inherit" the data type from $KiB
$MiB = 1024 * $KiB
$GiB = 1024 * $MiB
$TiB = 1024 * $GiB
$PiB = 1024 * $TiB
$EiB = 1024 * $PiB


#########################
# Calculated Settings
#########################

# Note that because we are using signed integers instead of unsigned
# these values are "limited" to 2 GiB or 8 EiB for 32/64 bit OSes respectively

$PhysicalRam = 0
$PhysicalRam = [long](invoke-expression (((get-wmiobject -class "win32_physicalmemory").Capacity) -join '+'))
if ( -not $? ) {
    write-output "Trying another method of detecting amount of installed RAM."
 }
if ($PhysicalRam -eq 0) {
    $PhysicalRam = [long]((Get-WmiObject -Class Win32_ComputerSystem).TotalPhysicalMemory) # gives value a bit less than actual
}
if ($PhysicalRam -eq 0) {
    write-error "Cannot Detect Physical Ram Installed. Assuming 4 GiB."
    $PhysicalRam = 4 * $GiB
}
$NewMax = [long]($PhysicalRam * 0.01 * $MaxPercent)
# The default value
# $NewMax = 1 * $TiB


#########################
# constants
#########################

# Flags bits
$FILE_CACHE_MAX_HARD_ENABLE     = 1
$FILE_CACHE_MAX_HARD_DISABLE    = 2
$FILE_CACHE_MIN_HARD_ENABLE     = 4
$FILE_CACHE_MIN_HARD_DISABLE    = 8


################################
# C# code
# for interface to kernel32.dll
################################
$source = @"
using System;
using System.Runtime.InteropServices;

namespace MyTools
{
    public static class cache
    {
        [DllImport("kernel32", SetLastError = true, CharSet = CharSet.Unicode)]
        public static extern bool GetSystemFileCacheSize(
            ref IntPtr lpMinimumFileCacheSize,
            ref IntPtr lpMaximumFileCacheSize,
            ref IntPtr lpFlags
            );

        [DllImport("kernel32", SetLastError = true, CharSet = CharSet.Unicode)]
        public static extern bool SetSystemFileCacheSize(
          IntPtr MinimumFileCacheSize,
          IntPtr MaximumFileCacheSize,
          Int32 Flags
        );

        [DllImport("kernel32", CharSet = CharSet.Unicode)]
        public static extern int GetLastError();

        public static bool Get( ref IntPtr a, ref IntPtr c, ref IntPtr d )
        {
            IntPtr lpMinimumFileCacheSize = IntPtr.Zero;
            IntPtr lpMaximumFileCacheSize = IntPtr.Zero;
            IntPtr lpFlags = IntPtr.Zero;

            bool b = GetSystemFileCacheSize(ref lpMinimumFileCacheSize, ref lpMaximumFileCacheSize, ref lpFlags);

            a = lpMinimumFileCacheSize;
            c = lpMaximumFileCacheSize;
            d = lpFlags;
            return b;
        }


        public static bool Set( IntPtr MinimumFileCacheSize, IntPtr MaximumFileCacheSize, Int32 Flags )
        {
            bool b = SetSystemFileCacheSize( MinimumFileCacheSize, MaximumFileCacheSize, Flags );
            if ( !b ) {
                Console.Write("SetSystemFileCacheSize returned Error with GetLastError = ");
                Console.WriteLine( GetLastError() );
            }
            return b;
        }
    }

    public class AdjPriv
    {
        [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
        internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);

        [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
        internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);

        [DllImport("advapi32.dll", SetLastError = true)]
        internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);

        [StructLayout(LayoutKind.Sequential, Pack = 1)]
        internal struct TokPriv1Luid
        {
            public int Count;
            public long Luid;
            public int Attr;
        }
        internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
        internal const int SE_PRIVILEGE_DISABLED = 0x00000000;
        internal const int TOKEN_QUERY = 0x00000008;
        internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;

        public static bool EnablePrivilege(long processHandle, string privilege, bool disable)
        {
            bool retVal;
            TokPriv1Luid tp;
            IntPtr hproc = new IntPtr(processHandle);
            IntPtr htok = IntPtr.Zero;
            retVal = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok);
            tp.Count = 1;
            tp.Luid = 0;
            if(disable)
            {
                tp.Attr = SE_PRIVILEGE_DISABLED;
            } else {
                tp.Attr = SE_PRIVILEGE_ENABLED;
            }
            retVal = LookupPrivilegeValue(null, privilege, ref tp.Luid);
            retVal = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);
            return retVal;
        }
    }
}
"@
# Add the c# code to the powershell type definitions
Add-Type -TypeDefinition $source -Language CSharp

#########################
# Powershell Functions
#########################
function output-flags ($flags)
{
    Write-output ("FILE_CACHE_MAX_HARD_ENABLE  : " + (($flags -band $FILE_CACHE_MAX_HARD_ENABLE) -gt 0) )
    Write-output ("FILE_CACHE_MAX_HARD_DISABLE : " + (($flags -band $FILE_CACHE_MAX_HARD_DISABLE) -gt 0) )
    Write-output ("FILE_CACHE_MIN_HARD_ENABLE  : " + (($flags -band $FILE_CACHE_MIN_HARD_ENABLE) -gt 0) )
    Write-output ("FILE_CACHE_MIN_HARD_DISABLE : " + (($flags -band $FILE_CACHE_MIN_HARD_DISABLE) -gt 0) )
    write-output ""
}

#########################
# Main program
#########################

write-output ""

#########################
# Get and set privilege info
$ProcessId = $pid
$processHandle = (Get-Process -id $ProcessId).Handle
$Privilege = "SeIncreaseQuotaPrivilege"
$Disable = $false
Write-output ("Enabling SE_INCREASE_QUOTA_NAME status: " + [MyTools.AdjPriv]::EnablePrivilege($processHandle, $Privilege, $Disable) )

write-output ("Program has elevated privledges: " + ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator") )
write-output ""
whoami /PRIV | findstr /I "SeIncreaseQuotaPrivilege" | findstr /I "Enabled"
if ( -not $? )  {
    write-error "user Security Token SE_INCREASE_QUOTA_NAME: Disabled`r`n"
}
write-output "`r`n"


#########################
# Get Current Settings
# Init variables
$SFCMin = 0
$SFCMax = 0
$SFCFlags = 0
#Get Current values from kernel
$status = [MyTools.cache]::Get( [ref]$SFCMin, [ref]$SFCMax, [ref]$SFCFlags )
#typecast values so we can do some math with them
$SFCMin = [long]$SFCMin
$SFCMax = [long]$SFCMax
$SFCFlags = [long]$SFCFlags
write-output "Return values from GetSystemFileCacheSize are: "
write-output "Function Result : $status"
write-output "            Min : $SFCMin"
write-output ("            Max : $SFCMax ( " + $SFCMax / 1024 / 1024 / 1024 + " GiB )")
write-output "          Flags : $SFCFlags"
output-flags $SFCFlags


#########################
# Output our intentions
write-output ("Physical Memory Detected : $PhysicalRam ( " + $PhysicalRam / $GiB + " GiB )")
write-output ("Setting Max to " + $MaxPercent + "% : $NewMax ( " + $NewMax / $MiB + " MiB )`r`n")

#########################
# Set new settings
$SFCFlags = $SFCFlags -bor $FILE_CACHE_MAX_HARD_ENABLE # set max enabled
$SFCFlags = $SFCFlags -band (-bnot $FILE_CACHE_MAX_HARD_DISABLE) # unset max dissabled if set
# or if you want to override this calculated value
# $SFCFlags = 0
$status = [MyTools.cache]::Set( $SFCMin, $NewMax, $SFCFlags ) # calls the c# routine that makes the kernel API call
write-output "Set function returned: $status`r`n"
# if it was successfull the new SystemFileCache maximum will be NewMax
if ( $status ) {
    $SFCMax = $NewMax
}


#########################
# After setting the new values, get them back from the system to confirm
# Re-Init variables
$SFCMin = 0
$SFCMax = 0
$SFCFlags = 0
#Get Current values from kernel
$status = [MyTools.cache]::Get( [ref]$SFCMin, [ref]$SFCMax, [ref]$SFCFlags )
#typecast values so we can do some math with them
$SFCMin = [long]$SFCMin
$SFCMax = [long]$SFCMax
$SFCFlags = [long]$SFCFlags
write-output "Return values from GetSystemFileCacheSize are: "
write-output "Function Result : $status"
write-output "            Min : $SFCMin"
write-output ("            Max : $SFCMax ( " + $SFCMax / 1024 / 1024 / 1024 + " GiB )")
write-output "          Flags : $SFCFlags"
output-flags $SFCFlags

উপরের দিকে লাইন রয়েছে যা বলেছে $MaxPercent = 12.5যে নতুন শারীরিক র‌্যামের সর্বাধিক কার্যকারী সেট (সক্রিয় মেমরি) সেট করে মোট শারীরিক র‌্যামের 12.5% ​​to উইন্ডোজ সিস্টেমের চাহিদার ভিত্তিতে অ্যাক্টিভ মেমোরিতে মেটাফিল ডেটার পরিমাণকে গতিশীল আকারে আকার দেবে, সুতরাং আপনার এটিকে সর্বোচ্চ গতিযুক্ত করার প্রয়োজন হবে না।

ম্যাপযুক্ত ফাইল ক্যাশে খুব বড় হওয়ার সাথে এটি আপনার কোনও সমস্যার সমাধান করবে না।

আমি একটি পাওয়ারশেলGetSystemFileCacheSize স্ক্রিপ্টও তৈরি করেছি এবং এটি স্ট্যাকওভারফ্লোতে পোস্ট করেছি


সম্পাদনা: আমার এও উল্লেখ করা উচিত যে আপনি একই পাওয়ারশেল উদাহরণ থেকে এই 2 টি স্ক্রিপ্ট দুটি একবারের বেশি না চালানো উচিত, না আপনি Add-Typeকলটি ইতিমধ্যে করা হয়েছে এমন ত্রুটিটি পাবেন ।

সম্পাদনা করুন: SetSystemFileCacheSizeসংস্করণ 1.1 এ আপডেট হওয়া স্ক্রিপ্ট যা আপনার জন্য উপযুক্ত সর্বোচ্চ ক্যাশে মান গণনা করে এবং আরও ভাল স্ট্যাটাস আউটপুট লেআউট রয়েছে।

সম্পাদনা: এখন আমি আমার উইন্ডোজ 7 ল্যাপটপটি আপগ্রেড করেছি, আমি আপনাকে বলতে পারি যে স্ক্রিপ্টটি উইন্ডোজ 10 এ সফলভাবে চলমান, যদিও এখনও পরীক্ষা করার প্রয়োজন নেই কিনা পরীক্ষা করে দেখিনি। চারপাশে ভার্চুয়াল মেশিন এইচডিডি ফাইলগুলি সরানোর সময়ও আমার সিস্টেমটি এখনও স্থিতিশীল।


DynCache সরঞ্জামটি মাইক্রোসফট /en-us/download/details.aspx?id=9258 থেকে অবাধে ডাউনলোডের জন্য উপলব্ধ এবং ২০০৮ আর 2 সমর্থন করে।
জাকুব বেরেজানস্কি

এটা এখন. আর 2 উইন্ডোজ রিলিজ এবং ডাইনক্যাশ রিলিজের মধ্যে একটি দীর্ঘ সময় ছিল। এমএস ব্লগ পোস্ট আপডেটের জন্য ব্লগস.টেকনেট / বি / ইয়ংগ্রি / অর্চিভ/2010/02/16/… দেখুন । আমি এখনও আমার সমাধানটিকে অগ্রাধিকার দিচ্ছি কারণ এর জন্য আরও একটি পরিষেবা চালানোর জন্য অতিরিক্ত সংস্থান দরকার হয় না। আমাদের সার্ভারগুলি আমার স্ক্রিপ্টের সাহায্যে খুব স্থিতিশীল হয়ে উঠেছে, তাই আমি এগুলি ডাইনচেতে পরিবর্তন করছি না।
বেওলোফনড 42

@ বিউওলফনোড 42 - ম্যাপযুক্ত ফাইল ক্যাশেটি বড় হওয়ার ক্ষেত্রে আমাদের সমস্যা হচ্ছে। কীভাবে সমাধান করবেন তা সম্পর্কে আপনার কোনও পয়েন্টার রয়েছে? আমি এই ধারণার মধ্যে ছিলাম যে সিস্টেম ফাইলের ক্যাশে আকার নির্ধারণ করাও সেই সমস্যার সমাধান করতে পারে ?! (ফুলে যাওয়া) ডাইনক্যাচ সরঞ্জামটি যদি সমস্যার সমাধান করে তবে আপনার কী ধারণা আছে ?
লিভেন কের্মসেকার্স

fww - আমি কেবল একটি পরীক্ষককে চেষ্টা করেছি এবং ম্যাপযুক্ত ফাইলটি (র‌্যাম্যাপ) 12 জিবি অ্যাক্টিভ, 0 জিবি স্ট্যান্ডবাই থেকে 8 জিবি অ্যাক্টিভ, 4 জিবি স্ট্যান্ডবাইতে পেয়েছে। সমস্ত উদ্দেশ্য এবং উদ্দেশ্যে, এটি ম্যাপ করা ফাইলগুলির জন্যও কাজ করে বলে মনে হচ্ছে ?!
লাইভেন কের্সেমেকার্স

নিবন্ধন করুন সম্ভবত এটি প্রবাহে কিছু প্রকারের। দ্রুত স্টোরেজ থেকে ধীরে ধীরে ফাইলগুলি অনুলিপি করার সময় অভিজ্ঞ ম্যাপযুক্ত ফাইল ক্যাশে ইস্যু সমাধান করার আমি ভাল উপায়টি পাইনি, যদিও আমি ডাইনক্যাচ সরঞ্জামটি ব্যবহার করে দেখিনি, কারণ আমাদের জন্য ম্যাপযুক্ত ফাইল ক্যাশে সমস্যাটি কেবল একটি বিরক্তিকর অস্থায়ী is আমাদের সার্ভারগুলিতে ধীর করে দিন যা আমাদের ব্যাকআপগুলি পরিচালনা করে। ভবিষ্যতের রেফারেন্সের জন্য সেই পরীক্ষার সিস্টেমে কতটা র্যাম রয়েছে এবং আপনি কি 12.5% ​​সেটিং সহ পোস্ট হিসাবে স্ক্রিপ্টটি চালাচ্ছিলেন, এবং যদি আপনি মনে করেন বা অন্য ধরণের মেমরির আকার রেকর্ড করেছেন?
বিউভুলফনোড 42

4

আমি কোনও উইন্ডোজ ওএসে মেমরি বা ডিস্ক ক্যাশে করার অভ্যন্তরীণ কাজ সম্পর্কিত বিশেষজ্ঞ হিসাবে দাবি করি না, তবে আমার দুটি পর্যবেক্ষণ রয়েছে:

  1. যদি ওএস মেমরিতে ডেটা ক্যাশে না করে তবে এটি ডিস্ক থেকে এটি পড়তে হবে, এটি তাত্পর্যপূর্ণ ধীর স্টোরেজ মিডিয়া তবে মেমরি, সুতরাং আপনি এখন যে পারফরম্যান্সের সমস্যাটি দেখছেন তা অবশ্যই আরও খারাপ হতে পারে।

  2. আপনি সমস্যার কারণ পরিবর্তে সমস্যার লক্ষণটি ব্যবহার করে সমস্যাটি সমাধান করার চেষ্টা করছেন। সমস্যার কারণটি অবশ্যই যথেষ্ট পরিমাণে শারীরিক র‍্যামের অভাব এবং আমার পরামর্শটি এটিকে মোকাবেলা করতে হবে।

এছাড়াও, যখন ক্যাশে 1.5 গিগাবাইট র‌্যাম ব্যবহার করছে তখন আমি ভাবতে পারি যে অন্যান্য প্রক্রিয়া এবং পরিষেবাদির জন্য মেমরির ব্যবহার কী এবং সম্ভাব্য সমস্যার জন্য সেই ব্যবহারটি তদন্ত করার সমাধান হতে পারে।


যথাযথভাবে। যদি ওপি মেটাফিলের র‍্যাম ব্যবহার হ্রাস করে তবে সিস্টেমটি ডিস্ক থেকে আরও মেটাডেটা লোড করতে হবে যেহেতু এর কম স্মৃতিশক্তি থাকবে, ফলে পরিস্থিতি আরও খারাপ হবে।
ডেভিড শোয়ার্টজ

1
সাহায্য করার জন্য ধন্যবাদ. কয়েকটি জিনিস, সার্ভারটি মূলত একটি মাইএসকিউএল ডাটাবেসযুক্ত একটি ওয়েব সার্ভার এবং খুব বেশি সময় ফাইলগুলি পড়ে না তাই ক্যাশে না থাকার মেটাডেটার সামান্য প্রভাব ন্যূনতম হয়, সাফ হয়ে গেলে কর্মক্ষমতা নাটকীয়ভাবে বৃদ্ধি পায়। সময়ের সাথে সাথে এটি বিভিন্ন ফাইলের সংখ্যা হ'ল কেন ক্যাশের আকার আরও বেশি এবং উচ্চতর হয়। আমি আরও সচেতন যে আরও র‌্যাম এটি সমাধান করবে, তবে যখন সার্ভারে থাকা অ্যাপ্লিকেশন বা স্ক্রিপ্টগুলিকে পেজিং এড়াতে সত্যিই প্রয়োজন হয় তখন কোনও "ক্যাশে" এর ধারণাটি কী মেমরি মুক্ত করে না? কেন এই নির্দিষ্ট ক্যাশে সর্বদা সক্রিয় হিসাবে চিহ্নিত হয় আমাকে বিভ্রান্ত করে।
al2k4

আপনি অবশ্যই এই সমস্যাটি নিজে কখনও অভিজ্ঞতা করেন নি। 32, 64, এবং 128 গিগাবাইট র‌্যাম সহ অনেক লোকের এই সমস্যা রয়েছে যেখানে মেটাফিল ডেটা দ্বারা অনেকটা র‌্যাম নেওয়া হয় এবং উইন্ডোজ এটি প্রকাশ করে না কারণ এটি সক্রিয় হিসাবে চিহ্নিত এবং স্ট্যান্ডবাই (ওরফে ক্যাশে) স্মৃতি নয় not আমি আমার উত্তরে বর্ণিত হিসাবে সেটসিস্টেমফাইলে ক্যাচি সাইজ এপিআই ব্যবহার করে উইন্ডোজকে মেটাফায়াল ডেটার বেশিরভাগ স্ট্যান্ডবাই মেমরি হিসাবে পতাকাঙ্কিত করতে বাধ্য করে এবং ক্যাশে পরিচালনা ব্যবস্থা তখন র‌্যামে কী রাখবে এবং কী ত্যাগ করবে তা অগ্রাধিকার দিতে সক্ষম হয়।
বিউভুলফনড 42

অনেকটা ট্রোল? এই প্রশ্নটি দুই বছরেরও বেশি পুরানো।
জোয়কওয়ার্টি

@ জোয়াকওয়ার্টি এই সমস্যাটি সম্পর্কে আমি পুরো নেট জুড়ে নতুন পোস্টগুলি দেখি। সম্পর্কিত অনুসন্ধানগুলির অনেকগুলি এই প্রশ্নে পৌঁছে। যেহেতু আমি আমার নিজের উত্তর আপডেট করছি এবং আমি বিশ্বাস করি যে আপনার উত্তরটি "দরকারী নয়" আমি এটিকে চিহ্নিত করেছি এবং কেন তা মন্তব্য করেছি। এটি যদি আমাকে ট্রোল করে তোলে তবে তা হ'ল।
বিউভুলফনড 42

3

যে সমস্ত লোকেরা আরও বেশি র‌্যাম যুক্ত করার সুস্পষ্ট কিন্তু অকার্যকর সমাধান দিয়েছেন, তাদের কাছে আপনি স্পষ্টতই এই সমস্যাটির মোকাবেলা করেননি।

পূর্ববর্তী পোস্টার হিসাবে যেমন বলা হয়েছে, সমস্যাটিতে আপনি কতটা র‌্যাম নিক্ষেপ করছেন তা বিবেচ্য নয় ... এটি সব পূরণ করবে। আমি আমাদের অ্যাপ্লিকেশন সার্ভারে একটি আটলাসিয়ান সরঞ্জাম সেট চালাচ্ছি যা 32 বিট (2003) থেকে 64 বিট (2008) এ স্থানান্তরিত হয়েছিল। এটি তাত্ক্ষণিকভাবে স্পষ্ট হয়েছিল যে এখানে কোনও কর্মক্ষমতা হ্রাস পেয়েছে।

টাস্ক ম্যানেজারের দিকে তাকানোর সময়, প্রায় সমস্ত স্মৃতি ব্যবহৃত হয়েছিল; তবুও যে প্রক্রিয়াগুলি চলছে তা এটিকে প্রতিফলিত করে না। আমরা যখন 8 গিগাবাইট থেকে 16 গিগাবাইটে মেমরি বাড়িয়েছি তখনও সমস্যাটি অতিরিক্ত মেমরি গ্রাস করেছে।

সমস্যার চিকিত্সার একমাত্র উপায় ছিল সার্ভারটি পুনরায় চালু করা, যা প্রক্রিয়াগুলির সমান মেমরির ব্যবহার (প্রায় 3.5 গিগাবাইট) নামিয়ে আনে। এটি এক বা এক দিনের মধ্যে আবার চড়তে শুরু করে।

আমি জানতাম এটি একটি নতুন মাইক্রোসফ্ট বাগ / বৈশিষ্ট্য এবং এই নিবন্ধটি পেয়ে খুশি। আমি পছন্দ করি যে কীভাবে মাইক্রোসফ্ট ব্যবহারকারীদের জন্য এই সমস্ত গুরুত্বপূর্ণ বিবরণটি রেখে দেয়। আমি রামম্যাপ ডাউনলোড করেছি, যা আপনি ভাবেন যে কোনও দেশীয় উপযোগিতা হবে এবং এখন আমি মেটাফিলের ব্যবহার দেখতে পাচ্ছি। আমরা প্রতি কয়েকদিনে ক্যাশে সাফ করার জন্য সেট করব এবং আশা করি এটি সমস্যার সমাধান করবে।

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


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

2
আমি সম্মত হই - আরও মেষ যুক্ত করা সমস্যার সমাধান করে না, এটি কেবলমাত্র বেশি পরিমাণে গ্রাস করবে এবং অন্যান্য সমস্ত প্রক্রিয়া অবশেষে থামবে। আমি সম্প্রতি 24 গিগাবাইটে আপগ্রেড করেছি, কেবল এসকিউএলকে 8 (জরিমানা) নিতে এবং मेटाফাইলে 12 টি রাখতে হবে .. জেমস এন - আপনি কোন সরঞ্জামটি পর্যায়ক্রমে সাফ করার জন্য ব্যবহার করছেন?
সিরিথোমাস

2

সিসইন্টার্নালস ক্যাশেসেট সরঞ্জামটি ব্যবহার করে এই সমস্যাটি দ্রুত এবং বিনামূল্যে সমাধান করা যেতে পারে। কেবলমাত্র সিস্টেমের র‌্যামের পরিমাণের চেয়ে কম পরিমাণে কার্যকর মান সেট করুন এবং প্রয়োগ করুন।


1

এতক্ষন প্রত্যক্ষ হওয়ার জন্য দুঃখিত তবে আপনি এখন কীভাবে সার্ভারকে এমন পরিমাণে র‌্যামে আপগ্রেড করবেন যা এই দিনগুলির ওয়ার্কস্টেশনগুলির চেয়ে কিছুটা বেশি? 16 জিবি মেমোরোয় সস্তা সস্তা হয়। আপনার সময়ের অর্ধেক দিনের চেয়ে কম ব্যয়বহুল।


2
এটি ভাল হিসাবে সমাধান করবে তবে আমাদের সার্ভারগুলি তৃতীয় পক্ষ দ্বারা দূরবর্তী হোস্ট করা হয়। আমাদের হোস্টগুলি কেবলমাত্র একটি মাসিক ভিত্তিতে র‌্যাম বাড়ানোর জন্য একটি বড় অঙ্কের চার্জ নেবে। সুতরাং আমরা যদি সম্ভব হয় তা এড়াতে চাই।
al2k4

2
হ্যাঁ। কী অনুমান করুন;) এই কারণেই আমি আমার হার্ডওয়্যারটি কিনি। হোস্টগুলি পাগল - আপনি 3 মাসের মধ্যে র‌্যাম কিনতে পারবেন। ভাল, শেখার পাঠ: আপনাকে কামড়ানোর জন্য একটি পেশাদারহীন সেটআপ ফিরে আসে।
টমটম

সমস্ত 64 বিট উইন্ডো সিস্টেমে সক্রিয় মেমরিতে সর্বাধিক পরিমাণ মেটাফিল ডেটার জন্য 1 টিবির একটি সেটিং থাকে (যখন অন্যান্য জিনিসগুলির আরও মেমরির প্রয়োজন হয় তখন ব্যবহৃত ক্যাশে স্ট্যান্ডবাই মেমরি হিসাবে প্রস্তুত হয় না)। আমি আপনার সম্পর্কে জানি না তবে আমি এখনও এর মধ্যে এতগুলি স্মৃতিযুক্ত কোনও উইন্ডোজ বাক্স দেখিনি। এইচডিডি তে সঞ্চিত আরও বেশি ফাইলের ব্যবহার করতে আপনাকে আরও র‌্যাম ইনস্টল করতে হবে না। এনটিএফএস প্রতি ভলিউম 4,294,967,295 ফাইল সমর্থন করবে বলে মনে করা হচ্ছে। একটি একক 4 টিবি এনটিএফএস ড্রাইভের পরে 900 মিলিয়নের বেশি ফাইল সমর্থন করতে সক্ষম হওয়া উচিত। এতে ডিফ্রেগ বা ব্যাকআপ চেষ্টা করুন এবং এটি ব্যর্থ বা ক্রল হয়ে যাবে।
বিউলফুলনড 42

1
হ্যাঁ, আপনার "সার্ভার" এর পাওয়ারফুল ল্যাপটপের চেয়ে কম র্যাম থাকলে আপনার থাকা উচিত। এটি "হাস্যকরভাবে উঠুন" সম্পর্কে নয়। এটি "সার্ভারের সেই নামটির জন্য প্রাপ্য যথেষ্ট হবে"।
টমটম

1

মাইক্রোসফ্ট ডাইনক্যাশ সরঞ্জামটি ডাউনলোড করতে এখানে একটি লিঙ্ক দেওয়া আছে - টিকিট তৈরি বা অর্থ প্রদানের প্রয়োজন নেই। http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=9258

(ক্ষমাপ্রার্থী - কেবল এখন লক্ষ্য করা যে এটি আর 2 সংস্করণের জন্য নয়)

পরিচিত অব্যাহত ক্যাশে বৃদ্ধির জন্য ইস্যু মাইক্রোসফট ব্লগে এখানে বর্ণিত হয়: http://blogs.msdn.com/b/ntdebugging/archive/2007/11/27/too-much-cache.aspx

[আপডেট] উইন্ডোজ সার্ভার 2008 আর 2 এর জন্য ওয়ার্কিং ফিক্স।

আমি কোডেপ্লেক্সে নমুনা সি # কোড পেয়েছি, দ্রুত ভিজুয়াল স্টুডিওতে একটি কনসোল সি # প্রকল্প তৈরি করেছি এবং সংকলিত, কাজ করেছি।

https://asstoredprocedures.svn.codeplex.com/svn/ASSP/FileSystemCache.cs

দ্রষ্টব্য, আপনাকে মাইক্রোসফ্টের জন্য একটি রেফারেন্স যুক্ত করতে হবে nএনালাইসিস সার্ভিসস domএডস ক্লায়েন্ট যা এখানে পাওয়া যাবে:

সি: \ প্রোগ্রাম ফাইল (x86) \ মাইক্রোসফ্ট.নাইট \ অ্যাডোমডি.নেট

এবং এক্সএমএলএডিস্কভারের (আমার ক্ষেত্রে) অপ্রয়োজনীয় রেফারেন্স সহ ক্লিয়ারআলক্যাচগুলি () পদ্ধতিটি মন্তব্য করুন। এটি টাস্কশেডুলারে ফেলে দিন।


0

আপনি এমএসের থেকে ডাইনক্যাশ সরঞ্জামটি পেতে পারেন যা মেটাফায়ার দ্বারা র‌্যামের ব্যবহারকে সীমাবদ্ধ করতে দেয়।

এমএস থেকে সরঞ্জাম পেতে এখানে ক্লিক করুন


এই লিঙ্কটি 2008 আর 2 সিস্টেমের জন্য কিছুই সরবরাহ করে না। এম $ এখনও আপনার ক্রেডিট কার্ড চায় যাতে আপনি এই জ্ঞাত সমস্যাটি ঠিক করতে অর্থ প্রদান করতে পারেন।
বিউওউলফনোড 42
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.