GetUsage () သည်လက်ရှိလုပ်ငန်းစဉ်သို့မဟုတ်ယင်း၏ကလေးဖြစ်စဉ်များကိုအရင်းအမြစ်အသုံးပြုမှုကိုရရှိသော PHP ဇာဇာ function ကိုဖြစ်သည်။ User / Kernel ပြည်နယ် CPU အချိန်, မှတ်ဥာဏ်စာမျက်နှာပျက်ကွက်ခြင်း,
$usage = getrusage();
အများအပြားအသုံးများသောလယ်ကွင်းများတွင်:
ru_utime.tv_sec နှင့် ru_utime.tv_usec : သုံးစွဲသူပြည်နယ် (စက္ကန့်နှင့် microseconds) မှအချိန်ကုန်လွန်သည့်အချိန်
ru_stime.tv_sec နှင့် ru_stime.tv_usec : အချိန် System State (စက္ကန့်နှင့် microseconds) တွင်အချိန်ကုန်လွန်ခဲ့သည်။
Ru_minflt : disk မှခေါ်ရန်မလိုအပ်သည့်စာမျက်နှာအမှားအယွင်းများ (soft page ပျောက်ဆုံးခြင်း)
Ru_majflt : disk မှခေါ်ဆိုသည့်စာမျက်နှာအမှားအယွင်းများ (ခဲယဉ်းပျောက်ဆုံးနေသောစာမျက်နှာများ)
ru_nvcsw and ru_nivcsw : စေတနာ့ဝန်ထမ်းနှင့်အတင်းအဓမ္မအခြေအနေများပြောင်းလဲခြင်းအချိန်များ
စနစ်ပေါ်ရှိဒေတာဘေ့စ်မေးမြန်းချက်များ၏သက်ရောက်မှုကိုစောင့်ကြည့်ရန်တိုက်ရိုက်နည်းလမ်းမှာ -
စုံစမ်းမှုမတိုင်မီတစ်ကြိမ် ရရှိသော getTrusage () logs;
aivel,
စုံစမ်းမှုပြီးနောက်နောက်တဖန် getTrusage () မှတ်တမ်းတင်ပါ;
နှစ်ခုမှတ်တမ်းများအကြားခြားနားချက်နှိုင်းယှဉ်။
နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
function getResourceUsageDiff($start, $end) {
$diff = [];
foreach ($end as $key => $value) {
if (isset($start[$key])) {
$diff[$key] = $value - $start[$key];
}
}
return $diff;
}
$before = getrusage();
// ဒေတာဘေ့စ်စုံစမ်းမေးမြန်းမှုကို Simulate
$mysqli = new mysqli("localhost", "user", "password", "database");
$result = $mysqli->query("SELECT * FROM users WHERE email LIKE '%@example.com'");
$after = getrusage();
$usageDiff = getResourceUsageDiff($before, $after);
echo "<pre>";
print_r($usageDiff);
echo "
";
ဤကုဒ်သည်စုံစမ်းမှုမှထုတ်လုပ်သောစနစ်အရင်းအမြစ်များကိုပြောင်းလဲနိုင်သည်။ ဥပမာအားဖြင့်, Ru_stime.tv_usec သိသိသာသာတိုးတက်မှုကိုသင်တွေ့မြင်ပါက,
ပိုမိုလက်တွေ့ကျသောရည်ရွယ်ချက်များအတွက်တိုင်းတာခြင်းလုပ်ငန်းစဉ်ကို function တစ်ခုသို့ encapsulated လုပ်နိုင်သည်,
function profileQuery($query, $mysqli) {
$before = getrusage();
$result = $mysqli->query($query);
$after = getrusage();
$usageDiff = getResourceUsageDiff($before, $after);
file_put_contents("/var/log/db_profile.log", json_encode([
'query' => $query,
'usage' => $usageDiff,
'time' => date('c')
]) . PHP_EOL, FILE_APPEND);
return $result;
}
ဤနည်းလမ်းသည်သင့်အား system resolution query ားအနကိုပုံမှန်ယုတ္တိဗေဒကိုစိတ်အနှောင့်အယှက်ဖြစ်စေခြင်းမရှိဘဲစဉ်ဆက်မပြတ်စုဆောင်းရန်ခွင့်ပြုသည်။ နောက်ဆက်တွဲအကောင်းမြင်မှုအတွက်အခြေခံကျသည်။
ကွဲပြားခြားနားသောအညွှန်းကိန်းဖွဲ့စည်းပုံ၏သွဇာလွှမ်းမိုးမှုနှိုင်းယှဉ်
System Resource အသုံးပြုမှုကိုနှိုင်းယှဉ်ရန်တူညီသောအခြေအနေများနှင့်ကွဲပြားခြားနားသောအညွှန်းကိန်းဖွဲ့စည်းတည်ဆောက်ပုံများနှင့်တူညီသောအခြေအနေများနှင့်ကွဲပြားခြားနားသောအညွှန်းကိန်းဖွဲ့စည်းပုံများကိုအသုံးပြုခြင်းအားဖြင့်သင်အညွှန်းကိန်းချိန်ညှိချက်များသည်ထိရောက်မှုရှိမရှိအလိုအလျောက်အကဲဖြတ်နိုင်သည်။
Batch Query သို့မဟုတ် Big Data Paging Performance
Pagination သို့မဟုတ် Batch Query ကိုရင်ဆိုင်ရသောအခါ Ru_majflt နှင့် ru_nvcws ကြီးထွားလာခြင်းရှိမရှိကိုလေ့လာခြင်းသည်အမှတ်တရများအနေဖြင့်မှတ်ဥာဏ်အစာခြေခြင်းသို့မဟုတ်အခြေအနေပြောင်းလဲခြင်းကိုအစပျိုးခြင်းရှိမရှိဆုံးဖြတ်နိုင်သည်။
စိတ်ဖိစီးမှုစမ်းသပ်မှုများတွင်အရင်းအမြစ်အသုံးပြုမှုကိုနှိုင်းယှဉ်ခြင်း
Apache Benchmark, JMeter စသဖြင့် Tools များနှင့် ပူးပေါင်း. တစ်ပြိုင်နက်တည်းစမ်းသပ်ခြင်း, အရင်းအမြစ်သိမ်းပိုက်မှုအပြောင်းအလဲများကိုပြုလုပ်ရန်နှင့်စနစ်၏စွမ်းဆောင်ရည်ကိုမြင့်မားသောဝန်များကိုခွဲခြမ်းစိတ်ဖြာရန်နှင့်ပူးပေါင်းဆောင်ရွက်ရန်နှင့်စနစ်၏စွမ်းဆောင်ရည်ကိုဆန်းစစ်ပါ။
အကယ် . သင်သည် GetTrusage တွင်အပြောင်းအလဲများကိုကြည့်လိုပါက debugging လုပ်နေစဉ်အတွင်း browser တွင်ရှင်းရှင်းလင်းလင်းမြင်နိုင်လျှင်အောက်ပါကုဒ်ကို အသုံးပြု. output ကို format လုပ်နိုင်သည်။
function formatUsage(array $usage) {
return sprintf(
"User CPU: %.4fs, System CPU: %.4fs, Major Faults: %d, Voluntary CS: %d",
$usage['ru_utime.tv_sec'] + $usage['ru_utime.tv_usec'] / 1e6,
$usage['ru_stime.tv_sec'] + $usage['ru_stime.tv_usec'] / 1e6,
$usage['ru_majflt'] ?? 0,
$usage['ru_nvcsw'] ?? 0
);
}
echo formatUsage($usageDiff);