Category Archives: အထွေထွေ

Mere Piya Gaye Rangoon

Patanga (1949) ဆိုတဲ့ ဇာတ်ကားထဲက သီချင်းတစ်ပုဒ် Rangoon တစ်လုံးပဲမြင်မိလိုက်တာ နားထောင်လည်း သူတို့စကားကိုကိုယ်မှ နားမလည်တာကိုး စိတ်ဝင်စားတာနဲ့ သီချင်းစာသားကို အင်္ဂလိပ်ဘာသာပြန်ကို ရှာဖတ်ကြည့်ရတယ် အိန္ဒိယကနေ ရန်ကုန်ကိုအလုပ်လုပ်တဲ့ ယောက်ျားက Dehradun မှာကျန်ခဲ့တဲ့ ဇနီးသည်ဆီကိုဖုန်းဆက် လုံချည်ဝတ်တာများလို့ ဘောင်းဘီကိုတောင် မေ့နေပြီလို့ဆိုတယ်။ အရင်တုံးက အိန္ဒိယကနေ ရန်ကုန်ကိုလာပြီး အလုပ်လုပ်ကြရတယ် အခုအချိန်ပြန်ပြောပြရင် ပုံပြင်လို့ပြောကြမယ်ထင်တယ်။

Mere Piya Gaye Rangoon

Hin: Hello, hindustaan kaa Dehradun? 
Eng: Hello, Dehradun of India?

Hin: Main apanii bivii renukaa devii se baat karanaa chaahataa huun 
Eng: I want to my speak to my wife, renuka devi

Hin: Haan haan 
Eng: Yes, yes

Hin: Mere piyaa; ho mere piyaa gaye ranguun 
Eng: My husband, o my husband has gone to rangoon

Hin: Kiyaa hai vahaan se telifuun 
Eng: Has telephoned from there

Hin: Tumhaarii yaad sataatii hai 
Eng: Your thoughts are tormenting me

Hin: Jiyaa mein aag lagaatii hai 
Eng: Sets fire to my heart/mind

Hin: Mere piyaa gaye ranguun 
Eng: My husband has gone to rangoon

Hin: Kiyaa hai vahaan se telifuun 
Eng: Has telephoned from there

Hin: Tumhaarii yaad sataatii hai 
Eng: Your thoughts are tormenting me

Hin: Jiyaa mein aag lagaatii hai 
Eng: Sets fire to my heart/mind

Hin: Ham chhod ke hindustaan 
Eng: After leaving India

Hin: Bahut pachhataaye 
Eng: I regretted a lot

Hin: Huii bhuul jo tumako saath na lekar aaye 
Eng: I made a mistake by not bringing you along with me

Hin: Ham barmaa kii galiyon main aur tum ho Dehradun 
Eng: I am in the streets of burma and you are in Dehradun

Hin: Tumhaarii yaad sataatii hai 
Eng: Your memories are tormenting me

Hin: Jiyaa mein aag lagaatii hai 
Eng: Keeps setting my mind on fire

Hin: Merii bhuukh pyaas bhii kho gaye 
Eng: My thirst and hunger are also lost

Hin: Gam ke maare 
Eng: In my grief

Hin: Main adhamuii sii ho gai gam ke maare 
Eng: I am half conscious because of the grief

Hin: Tum bin, saajan, janavarii faravarii ban gaye me aur juun 
Eng: Without you, my love, january and february have become may and june

Hin: Tumhaarii yaad sataatii hai 
Eng: Your thoughts are tormenting me

Hin: Jiyaa mein aag lagaatii hai 
Eng: Sets my mind on fire

Hin: AJii tumase bichha.dake ho gaye ham sanyaasii 
Eng: After separating from you, i have become a monk

Hin: Khaa lete hain jo mil jaaye ruukhii suukhii baasii 
Eng: I eat what ever i get, withered, dry or stale

Hin: AJii luungii baandh, ke karein guzaaraa bhuul gaye pataluun 
Eng: I live my life by just wearing a luungi, have forgotten about pants

Hin: Tumhaarii yaad sataatii hai 
Eng: Your tghoughts torment me so

Hin: Jiyaa mein aag lagaatii hai 
Eng: Sets my heart/mind on fire

From: http://www.hindilyrics.net/translation-Patanga/Mere-Piya-Gaye-Rangoon.html

MySQL Memory Management

MySQL ဆိုတာ Install လုပ်ပြီးတာနဲ့ သုံးလို့ရပြီလို အတော်များများ ပြောလေ့ရှိတယ် တကယ်တမ်းက သာမန်အခြေအနေမှာ မသိသာပေမယ့် တကယ်တမ်းသုံးရင်တော့ Default Setting တွေဟာ ပြဿနာရှိပါတယ်။ Default Setting နဲ့ဆိုရင်တော့ Specification မြင့်တဲ့ Server ပေါ်မှာ Run နေပါစေ Performance က ထူးခြားမလာတာတွေ့ရလိမ့်မယ်။ Resource နည်းနည်းပဲရှိတဲ့ Server ပေါ်မှာတင်ထားပြီး Default နဲ့ Run နေရင်လည်း Resource မလောက်လို့ Server ရပ်သွားတာလည်းရှိတယ်။

Database Structure မဟုတ်ပဲ Server Setting တွေကို Optimize လုပ်မယ်ဆိုရင် Processing ကို Manage လုပ်လို့ရတာ အခွင့်အလမ်းနည်းပါတယ် Memory နဲ့ Storage ကိုပဲ Optimize လုပ်လို့အများဆုံးရတယ်။ Memory Management ဆိုရင် Server ပေါ်ကရနိင်တဲ့ Memory ပမာဏကို အကောင်းဆုံးဖြစ်အောင် စနစ်တကျသုံးနိုင်ဖို့လိုတယ်။

MySQL သုံးမယ့် Memory က Global သုံးမယ့် Memory နဲ့ Client တစ်ခုချင်းသုံးမယ့် Memory ဆိုပြီးနှစ်မျိုးခွဲလို့ရတယ်။ query_cache_size, key_buffer_size လို Variable တွေဟာ သတ်မှတ်ပေးလိုက်တဲ့ Memory ကို Connection အားလုံး Share လုပ်မှာဖြစ်တဲ့အတွက် Global လို့ပြောလို့ရတယ်။ sort_buffer_size, read_buffer_size, read_rnd_buffer_size လို Variables တွေကတော့ Connection တစ်ခုချင်းနဲ့ သက်ဆိုင်တယ်။ Maximum Memory Usage ဆိုရင် အောက်မှာပြထားတဲ့ Formula နဲ့တွက်လို့ရလိမ့်မယ်။

Equation

Maximum Memory Usage = Global memory + ( Per Client memory) * max_connections

Example

# Global Buffer
key_buffer_size = 64M
key_cache_block_size = 4096
query_cache_size = 64M
# Per Client
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 1M
# Other
max_connections = 50

Memory Usage

Maximum Memory Usage = (key_buffer_size + query_cache_size) + (sort_buffer_size + read_buffer_size + read_rnd_buffer_size) * max_connections
Maximum Memory Usage = (64M + 64M) + (1M + 1M + 1M) * 50 = 278M

အပေါ်မှာပြထားတဲ့ Example နဲ့ဆိုရင် Maximum Memory Usage က 278M ရတယ်။ အတိအကျသုံးတယ်လို့တော့ တွက်လို့မရဘူးပေါ့လေ တစ်ချို့ Cache တွေက Query အပေါ်မူတည်ပြီး Allocate လုပ်ဖို့လိုမှလုပ်တာပါ။ အဲဒီတော့ ဒီလို Configuration နဲ့ RAM 20GB လောက်ရှိတဲ့ Server ပေါ်မှာ Run နေရင်တော့ Resource တွေအလကားပိုနေလိမ့်မယ်။ Connection ၅ ခုလောက်တက်ရင် Memory 512M လောက်သုံးတဲ့ Configuration နဲ့ RAM 1GB ပဲရှိတဲ့စက်မှာ Run ရင်တော့ မကြာခဏပဲ Ram မလောက်လို့ Server Down ပါလိမ့်မယ်။ နမူနာပြထားတဲ့ Variables တွေက MySQL အတွက်နဲ့ MyISAM အတွက်ပဲနမူနာပါတယ် InnoDB သုံးရင် innodb_buffer_pool_size လို Variables တွေလည်း ထည့်တွက်ရလိမ့်မယ်။

Memory Usage မဟုတ်ပေမယ့် Management လို့ပြောရမယ့် key_cache_block_size လို Variable တွေရှိတယ် MyISAM ရဲ့ Cache block size ကိုဘယ်လောက်ထားမလဲ ဆိုတဲ့နေရာမှာ စဉ်းစားစရာအများကြီးရှိတယ်။ Document မှာရေးထားတာက OS မှာသုံးတဲ့ Page Size နဲ့တူရင် ကောင်းတယ်လို့ဆိုတယ် ဘာလို့လဲဆိုတော့ ဘယ်လောက်ပဲသတ်မှတ်သတ်မှတ် တကယ်တမ်း Physically Allocate လုပ်ရင်တော့ OS ကလုပ်တာဖြစ်လို့OS သုံးတဲ့ Page Size ထက်နည်းရင်ပဲဖြစ်ဖြစ် များရင်ပဲဖြစ်ဖြစ် Performance ပြဿနာရှိတယ်။ တူရင်ရောတကယ် ကောင်းမလားဆိုတော့ Data တစ်ခါဖတ်ရင် Page တစ်ခုပမာဏ အနည်းဆုံးဖတ်ရတော့ ကိုယ်သုံးတဲ့ Database ဟာ ဖတ်တာကိုပဲအဓိကသုံးရင် ကောင်းပေမယ့် ရေးတာပြင်တာများတဲ့ Database ဆိုရင်တော့ မလိုအပ်ပဲ Page အကြီးကြီးဖတ်ရတာက ပိုအချိန်ကုန်လိမ့်မယ်။

Database တစ်ခုကို ဘယ်လို Administrate လုပ်မလဲဆိုတာက Product Specific အလုပ်ပါ MySQL မှာ Optimize လုပ်ပုံလုပ်နည်းနဲ့ Oracle မှာလုပ်ပုံလုပ်နည်း ဘယ်လိုမှမတူနိုင်ဘူး ဒါပေမယ့် Option တစ်ခုပြောင်းဖို့ ဆုံးဖြတ်တာကတော့ Product Specific မဟုတ်သလို Subject Specific လည်းမဟုတ်ဘူး တစ်ခါတစ်ရံ Operating System တွေဘယ်လို အလုပ်လုပ်သလဲအပေါ်အခြေခံပြီး ဆုံးဖြတ်ရတာရှိသလို တစ်ခါတစ်ရံ Network Administration Knowledge အပေါ်အခြေခံတယ် Database Logical Structure အပေါ် အခြေခံတာလည်းရှိတယ်။ Skill တစ်ခုထဲ လိုအပ်တာမဟုတ်တဲ့အတွက် Qualify ဖြစ်တဲ့ DBA တွေနည်းနည်းသွားပြီး Install & Backup လုပ်တဲ့အလုပ်ကို DBA လို့ခေါ်ရတဲ့အခြေအနေ တစ်ဖြည်းဖြည်း ရောက်လာတော့တာပါပဲ။

Webserver Proxy

ပုံမှန်အားဖြင့် Web Server တွေက Server-side Programming Language အတော်များများကို Support လုပ်ပါတယ် ဥပမာဆိုရင် Apache ပေါ်မှာ mod_php, mod_ruby, mod_wsgi, mod_python, mod_perl စသည်ဖြင့်ပေါ့ Nginx မှာလည်း FastCGI နဲ့ Language အတော်များများကို သုံးလို့ရတာပါပဲ။ ဒါပေမယ့် သုံးချင်တဲ့ Programming Language က လက်ရှိသုံးနေတဲ့ Web Server မှာ ဘယ်လိုမှသုံးလို့မရတာလည်းရှိတယ် ဥပမာဆိုရင် JSP အတွက်ဆို Tomcat, GlassFish စသည်ဖြင့် မသုံးမဖြစ်သုံးရမယ် node.js အတွက် Apache Module ရှာနေလို့လည်းမရှိဘူး။ Physical Resource ကလည်း အကန့်အသတ်နဲ့ဆိုရင် Physical Server တစ်လုံးမှာ Multiple Web Server တင်ရတတ်တယ်။

Multiple Web Server ဖြစ်လာရင် ပထမဆုံးအခက်အခဲက Port တစ်ခုထဲမှာ Multiple Web Server Install လုပ်လို့မရတာပါ Web Server ဖြစ်တဲ့အတွက် Standard မဟုတ်တဲ့ Port မှာလည်း Setup လုပ်လို့မဖြစ်နိုင်ဘူး။ အဲဒီ့အခြေအနေမှာ ကိုယ်သုံးမယ့် Web Server တွေမှာ အဓိကထားသုံးမယ့် Server ကိုရွေးပြီးတော့ ကျန်တဲ့ Server တွေကို Non-Standard Port မှာ Run နေပြီးတော့ Primary Web Server ကို Proxy အနေနဲ့တဆင့်ခံပြီး Access လုပ်ရတော့တယ်။ Proxy ကို Configure လုပ်တာက သုံးမယ့် Server အပေါ်မူတည်တယ်။ ဥပမာဆိုရင်

Apache

ProxyPass / http://localhost:8080
ProxyPassReverse / http://localhost:8080

Nginx

location / {
	proxy_pass http://localhost:8080;
}

Proxy သုံးရင် Performace ပြဿနာတော့ရှိပါတယ် Performace က Physical Server Configuration ရယ် သုံးထားတဲ့ Primary Web Server အပေါ်မှာမူတည်တယ် Apache မှာဆိုရင် Proxy နောက်က Server ကို Access လုပ်နေရင် Apache Thread ဟာ တစ်ဘက်က Reply ပြန်မလာမချင်း Block ဖြစ်တဲ့အတွက် Resource လည်းပိုကုန်တယ် အဲဒီလိုအခြေအနေမှာတော့ Nginx ရဲ့ Non-blocking တွေက သိသိသာသာ ပိုကောင်းပါတယ်။ ဒါပေမယ့်လည်း အဲဒါတစ်ခုထဲနဲ့ Nginx ပြောင်းသုံးမယ်လည်း ဆုံးဖြတ်လို့ဖြစ်တာမဟုတ် လက်ရှိအလုပ်လုပ်နေတဲ့ System တစ်ခုကို ပြောင်းဖို့ဆုံးဖြတ်ရတာက ပိုပြီးတော့အန္တရာယ်ကြီးပါတယ်။ Performance တစ်ခုထဲအတွက်ဆိုရင်တော့ တစ်ခြားနည်းလမ်းနဲ့ ဖြေရှင်းလို့ရနိုင်ရင်လည်းရ ဒါမှမဟုတ် သိပ်ကွာဟမှုမရှိရင်လည်း ထားလိုက်ရတာလည်း ရှိတာပါပဲ။