প্রোডাকশন সার্ভারগুলিতে পারফোন চালানো কি ঠিক আছে? এবং কেন?


28

না পারফিউম এমন কোনও ডেড / কিউএ সার্ভারের মধ্যে সীমাবদ্ধ করা উচিত যা লোড টেস্টের সাথে উত্পাদন ক্রিয়াকলাপ অনুকরণ করে?

আমার ওয়েব অ্যাপ্লিকেশনটির ডেটাবেস কর্মক্ষমতা সম্পর্কে সামগ্রিক অনুভূতি পেতে আমি দু'দিনের জন্য পারফরম্যান চালাতে চাই ( যেমন এসকিএল সার্ভারের মাস্টার ব্রেন্ট ওজারের পরামর্শ দেয় )।


1
কিছু লোক একটি এসকিউএল ট্রেস ব্যবহার করার পরামর্শ দিয়েছেন - এসকিউএল ট্রেস সম্পর্কে সতর্ক থাকুন এবং কোনও প্রোড সার্ভারে সমস্ত ক্রিয়াকলাপটি কখনই ট্রেস করবেন না।
স্যাম

উত্তর:


26

এসকিউএল সার্ভার এবং অন্যান্য বেশিরভাগ পণ্য সর্বদা কাউন্টার তৈরি করে, শ্রোতা থাকুক বা না থাকুক (-x প্রারম্ভিক বিকল্পটি উপেক্ষা করে)। অ্যাপ্লিকেশন পর্যবেক্ষণ করা হচ্ছে পাল্টা ট্রেসিং সম্পূর্ণ স্বচ্ছ। একটি ভাগ করা মেমরি অঞ্চল রয়েছে যার উপর পর্যবেক্ষণকৃত অ্যাপ্লিকেশন লিখেছে এবং যা থেকে নিরীক্ষণ সেশনগুলি নির্দিষ্ট বিরতিতে কাঁচা মান পড়বে। সুতরাং নিরীক্ষণের সাথে সম্পর্কিত একমাত্র ব্যয় হ'ল মনিটরিং প্রক্রিয়াটির ব্যয় এবং ডিস্কে নমুনাযুক্ত মানগুলি লেখার জন্য ব্যয়। একটি শালীন সংগ্রহের ব্যবধান বেছে নেওয়া (আমি সাধারণত 15 সেকেন্ডে) এবং একটি মাঝারি সংখ্যক কাউন্টার (50-100) বেছে নিই এবং বাইনারি ফাইল ফর্ম্যাটে লেখার ফলে পর্যবেক্ষণ করা সিস্টেমে কোনও প্রভাব পড়ে না।

তবে আমি পারফমন ব্যবহারের বিরুদ্ধে প্রস্তাব দেব (পারফোন.এক্সিতে যেমন)। পরিবর্তে নিজেকে logman.exe এর সাথে পরিচিত করুন , লগম্যান.এক্সি, রিলোগ.এক্সি এবং টাইপ্পের্প.এক্স.সি সরঞ্জামগুলির বিবরণ দেখুন । এইভাবে আপনি আপনার সেশনের সাথে কালেকশন সেশনটি বেঁধে রাখবেন না। লগম্যান, একটি কমান্ড লাইন সরঞ্জাম হ'ল, সংগ্রহের সেশনগুলি শুরু করতে এবং থামাতে স্ক্রিপ্টগুলি এবং নির্ধারিত কাজের ক্ষেত্রে ব্যবহার করা যেতে পারে।


আমি সরাসরি টেবিলে ডেটা .োকানোর জন্য ডিএসএন সহ টাইপচার.এক্সজি ব্যবহার করছি। তাদের জন্য আলাদা ডিবি রয়েছে। এটি কোনওভাবে প্রভাব ফেলবে?
উদিত সোলঙ্কি

14

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

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

আমি বিরূপ প্রভাব ছাড়াই বেশ কয়েকটি প্রযোজনা এক্সচেঞ্জ বক্সগুলিতে সুগন্ধি চালিয়েছি।


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

@ ব্রেন্টে চিমিং দেওয়ার জন্য ধন্যবাদ যাইহোক, আমি গতকাল আপনার 2008 ইন্টার্নাল বইটি কিনেছি ।
বিল পাইটস্কে

আহ! আমাকে জানতে দাও তুমি এটা সম্পর্কে কি ভাবো।
ব্রেন্ট ওজার

7

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

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

<#
Install-FlightRecorder.ps1
.SYNOPSIS
Installs or sets up the pieces necessary to create PerfMon Collector 
snapshots, one a minute, to a file located in C:\FlightRecorder.

.DESCRIPTION
Installs or sets up the pieces necessary to create PerfMon Collector 
snapshots, one a minute, to a file located in C:\FlightRecorder.

.PARAMETER Path
File listing performance counters to collect, one per line. 
Or a PAL Threshold XML file.

#>
[CmdletBinding()]
param (
    [string]$Path
)

#Requires -RunAsAdministrator
$ScriptDir = { Split-Path $MyInvocation.ScriptName –Parent }
$DeleteTempFile = $False

function Main {
    if (-not $Path) { $Path = DefaultFile $Path }
    if (-not (Test-Path $Path)) {
        Write-Warning "Path does not exist or is inaccessable: $Path"
        Exit 1
    }
    if ($Path -like '*.xml') { $Path = PALFile $Path }

    Install-FlightRecorder
    if ($Path.startswith($env:TEMP)) {Remove-Item $Path}
    Write-Verbose 'Installation Successful.'
}

function Install-FlightRecorder {
    Write-Verbose 'Setting up the Flight Recorder.'
    if (-not (Test-Path c:\FlightRecorder\)) {
        mkdir c:\FlightRecorder | out-null 
    }
    if ((LOGMAN query) -match 'FlightRecorder') {
        Write-Verbose 'Removing former FlightRecorder PerfMon Collector.'
        LOGMAN stop FlightRecorder | out-null
        LOGMAN delete FlightRecorder | Write-Verbose
    }
    Write-Verbose 'Creating FlightRecorder PerfMon Collector.'
    LOGMAN create counter FlightRecorder -o "C:\FlightRecorder\FlightRecorder_$env:computername" -cf $Path -v mmddhhmm -si 00:01:00 -f bin | Write-Verbose
    SCHTASKS /Create /TN FlightRecorder-Nightly /F /SC DAILY /ST 00:00 /RU SYSTEM /TR 'powershell.exe -command LOGMAN stop FlightRecorder; LOGMAN start FlightRecorder; dir c:\FlightRecorder\*.blg |?{ $_.LastWriteTime -lt (Get-Date).AddDays(-3)} | del' | Write-Verbose
    SCHTASKS /Create /TN FlightRecorder-Startup /F /SC ONSTART /RU SYSTEM /TR "LOGMAN start FlightRecorder" | Write-Verbose
    SCHTASKS /Run /TN FlightRecorder-Startup | Write-Verbose
}

function DefaultFile {
    Write-Warning 'Counter or PAL file not specified, using default configuration.'
    $DeleteTempFile = $True
    $Path = [System.IO.Path]::GetTempFileName()
    Set-Content -Encoding ASCII $Path @'
\LogicalDisk(*)\Avg. Disk sec/Read
\LogicalDisk(*)\Avg. Disk sec/Write
\LogicalDisk(*)\Disk Transfers/sec
\LogicalDisk(C:)\Free Megabytes
\Memory\% Committed Bytes In Use
\Memory\Available MBytes
\Memory\Committed Bytes
\Memory\Free System Page Table Entries
\Memory\Pages Input/sec
\Memory\Pages/sec
\Memory\Pool Nonpaged Bytes
\Memory\Pool Paged Bytes
\Memory\System Cache Resident Bytes
\Network Interface(*)\Bytes Total/sec
\Network Interface(*)\Output Queue Length
\Paging File(*)\% Usage
\Paging File(*)\% Usage Peak
\PhysicalDisk(*)\Avg. Disk sec/Read
\PhysicalDisk(*)\Avg. Disk sec/Write
\Process(_Total)\Handle Count
\Process(_Total)\Private Bytes
\Process(_Total)\Thread Count
\Process(_Total)\Working Set
\Processor(*)\% Interrupt Time
\Processor(*)\% Privileged Time
\Processor(*)\% Processor Time
\System\Context Switches/sec
\System\Processor Queue Length
'@
    $Path
}

function PalFile {
    $DeleteTempFile = $True
    $InputPath = $Path
    $Path = [System.IO.Path]::GetTempFileName()
    $filesRead = @()
    Read-PalFile $InputPath | Select -Unique | sort | Set-Content -Encoding ASCII $Path
    $Path
}

$script:filesRead =@()
function Read-PalFile ([string]$path) {
    if (-not (Test-Path $path)) {
        Write-Warning "PAL Threshold file not found: $path"
        return
    }
    if ($script:filesRead -contains $path) {return}
    $script:filesRead += @($path)
    Write-Verbose "Reading PAL Threshold file: $path"
    $xml = [XML](Get-Content $path)
    $xml.SelectNodes('//DATASOURCE[@TYPE="CounterLog"]') | select -expand EXPRESSIONPATH
    $xml.SelectNodes('//INHERITANCE/@FILEPATH') | select -expand '#text' | where {$_ } | ForEach {
        $newpath = Join-Path (Split-Path -parent $path) $_
        Write-Debug "Inheritance file: $newpath"
        Read-PalFile $newpath
    }
}

. Main

এই স্ক্রিপ্টটি ইনস্টল করার জন্য কিছু দরকার (পল বা অন্য কিছু)? যদি সম্ভব হয় তবে আপনি যে আউটপুট ফাইলটি তৈরি করেন তার নমুনা সরবরাহ করতে পারেন? দুঃখিত, আমি পাওয়ারশেলকে চিনি না।
কোডিংইয়োশি

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

3

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

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

মাইক্রোসফ্টের একটি পারফমন উইজার্ড রয়েছে যা আপনার জন্য কাজটি সেটআপ করবে।

http://www.microsoft.com/downloads/details.aspx?FamilyID=31FCCD98-C3A1-4644-9622-FAA046D69214&displaylang=en


আমি দেখতে পাচ্ছি যে PerfMon উইজার্ড 2004. আমি আশ্চর্য মুক্তি পায় যদি এটা SQL সার্ভার 2005 সঙ্গে আসে মান
বিল Paetzke

আমি মনে করি যে সংস্করণটি এখনও বিদ্যমান।
গ্রেগ অ্যাস্কিউ

2

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


2

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

আমি বরাবরের মতো এখানকার সমস্ত পোস্টের দ্বারা অবাক হয়েছি যারা স্পষ্টতই ডকুমেন্টেশনটি কখনও পড়ে না;)

http://www.simple-talk.com/sql/learn-sql-server/sql-server-2008-performance-data-collector/ একটি ভাল শুরু। আইএমএইচও যা প্রায় প্রতিটি স্কিএল সার্ভারে কাজ করা উচিত যা উত্পাদন উদ্দেশ্যে ব্যবহৃত হয়।


1

অনেকে যেমন পরামর্শ দিয়েছেন পারফ্মন চালানোর ক্ষেত্রে কোনও অসুবিধা নেই তবে আমি একই পরিবর্তে প্রোফাইলার চালিয়ে যাব বা একই সাথে খুব বেশি বার ক্যাপচার করবেন না, কেবল দীর্ঘ চলমান অনুসন্ধানগুলি ধরুন, যেমন সময়কাল> এক্স সেকেন্ড, বা সিপিইউ> এক্সএক্স , বা পড়া> xxxx; খুব সামান্য প্রভাব পড়বে এবং আপনি দ্রুত এমন কোয়েরি দেখতে পাবেন যা টিউনিংয়ের মাধ্যমে সবচেয়ে বেশি উপকৃত হবে।


সময়কাল, সিপিইউ এবং পড়ার ভিত্তি প্রান্তিক হিসাবে আপনি কী ব্যবহার করবেন?
বিল পাইটস্কে

এটি অ্যাপের উপর নির্ভর করে, তবে আমি সময়কাল> (যে কোনও ব্যবহারকারীর জন্য কিছু অপেক্ষা করার জন্য চাইবে সর্বোচ্চ সময়) দিয়ে শুরু করব; খুব উচ্চ, 10 সেকেন্ড বা তার বেশি কিছু শুরু করুন, যদি আপনি কিছু না পান তবে দুর্দান্ত, কিছুটা পিছিয়ে দিন। গ্যারান্টিযুক্ত আপনি শীর্ষে কিছু চমক "ভাসা" পাবেন have
স্ক্ল্যাসিড আইডি

.. এবং আমি সময়কাল দিয়ে শুরু করব, আপনি যদি সিপিইউ-বদ্ধ বলে মনে করেন তবেই সিপিইউ ব্যবহার করুন, আপনি যদি আমি / ও-আবদ্ধ হন তবে কাউন্টারগুলি পড়ুন বা লিখুন, তবে অবরুদ্ধ ব্যবহার কোথায় বাধা আছে যেখানে আপনি নিশ্চিত নন বা ঠিক যেমনটি আপনি বলেছেন, কী চলছে তার অনুভূতি পাওয়ার চেষ্টা করছেন trying
স্ক্ল্যাসিড আইডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.