OpenVZ

ช่วงวันแม่ได้อุปกรณ์มาอัพเกรดเซิร์ฟเวอร์จากแต่เดิมที่ต้องใช้สอยอย่างประหยัดมาเป็นที่เหลือเฟือ ก็เลยได้ลองของเล่นใหม่ด้วย คือ OpenVZ ครั้งแรกที่รู้จัก คิดว่ามันไม่ต่างอะไรจาก Xen หรือ VMWare เลยเป็นเพียงแค่ VM อีกยี่ห้อนึงเท่านั้น (จะว่าไปก็แทบจะไม่รู้ว่าความแตกต่างของ VM แต่ละค่ายอยู่แล้ว ว่ามันพิศดารต่างกันอย่างไร) แต่พอได้เล่นแล้วรู้สึกว่ามันเจ๋งมาก เพราะมันมีสิ่งที่ต้องการหลัก ๆ ครบเลยคือ

  • สามารถจำกัด CPU และ Memory ของเครื่องลูกได้
  • มี overhead ไม่เยอะ เพราะ VM ทุกตัวใช้ kernel เดียวกันหมด
  • มี web control panel ให้เลือกมากมาย ไม่ต้องลงโปรแกรมเพิ่มเพื่อเข้ามาจัดการ

แน่นอนมันย่อมมีข้อเสียคือ มันไม่สามารถลง OS อื่นนอกจาก Linux ได้ เพราะมันใช้ Kernel เดียวกันหมดทำให้นึกถึงญาติห่าง ๆ ของมันยิ่งนัก FreeBSD jail แต่ด้วยข้อดีเรื่องจำกัดทรัพยากรกับ web control panel ที่ jail ไม่มีเลยไม่ได้เลือกใช้ (และแน่นอน ถ้าใช้ jail OS ที่ลงได้ก็มีแต่ BSD เท่านั้นกว่าจะลงได้แต่ละตัว compile กันสนุกแน่นอน) ด้านล่างเป็นตารางเปรียบเทียบข้อดีข้อเสียคร่าว ๆ ที่ใช้สำหรับการตัดสินใจ แน่นอนว่าไม่มีศัพท์เทคนิคต่าง ๆ เพราะไม่รู้รายละเอียดเหมือนกัน ฮะ ๆ และอาจลำเอียงนิดหน่อยเพราะเห่อ OpenVZ อยู่

OpenVZ FreeBSD Jail VMWare Server
การติดตั้ง สำหรับ Debian มันเป็นอะไรที่ง่ายมาก เพราะสั่ง aptitude install openvz kernel จากนั้น reboot 1 ครั้งก็เสร็จ Build มาให้กับ Kernel ไม่ต้องลงเพิ่มแต่อย่างใด มี Package ให้ติดง่าย พอ ๆ กับ OpenVz
Overhead Kernel เครื่องลูกทั้งหมดคือ Kernel ในเครื่องหลัก เวลาทำงานอะไร เลยไม่ต้องผ่าน hardware emulator เหมือนทำงานอยู่บนเครื่องจริง คล้ายกับ OpenVZ ต้องทำงานผ่าน Hardware emulator
OS ที่ติดเป็นเครื่องลูกได้ Linux เท่านั้น BSD เท่านั้น OS อะไรก็ได้
ความสามารถในการจำกัดทรัพยากรเครื่องลูก สามารถจำกัดได้ ทั้ง CPU และ Memory เท่าที่รู้มาก FreeBSD 8 สามารถจำกัดได้ แต่เอกสารแทบไม่บอกรายละเอียดเรื่องนี้เลย สามารถจำกัดได้ ทั้ง CPU และ Memory
Control Panel มี Web control panel ให้เลือกมากมายหลากหลายเจ้า ทั้งฟรี และไม่ ฟรี ไม่มี!!! มี Control panel ให้ใช้ได้สำหรับ Windows และ Linux ส่วน OSX อด! T_T

จากตารางด้านบน ถ้าคิดคะแนน สีแดง 0 สีน้ำเงิน 1 สีเขียว 2 OpenVZ ชนะขาด สำหรับเจ้าอื่น ๆ อย่าง Xen, KVM, ESXi ถ้ามีแรงเหลือเฟือ ก็จะลองอีกที แต่ตอนนี้ขอเห่อ OpenVZ ไปอีกซักพักก่อนจนกว่าจะเบื่อ

Read full story Comments { 1 }

Software on my mac #2

มาเพิ่มเติมจากคราวที่แล้ว เพราะเขียนตกไป + ลงเพิ่ม!

  • AppCleaner – สำหรับลบโปรแกรมที่ไม่ได้ใช้งานแล้ว
  • DiffMerge* – โปรแกรมที่ใช้สำหรับ Merge code ฟรี + ใช้ง่าย
  • Geotagalog – หลังจากค้นพบว่า App GPSX ใน iPhone มัน export เส้นทางออกมาได้เพื่อใช้ใส่ตำแหน่งให้รูปภาพที่ถ่ายด้วยกล้องทั่วไป ก็เลยหาโปรแกรมมาใช้ร่วมกันซะเลย จริง ๆ มีอีกตัวชื่อ Geotagr แต่มันไม่สามารถใช้กับไฟล์ gpx ที่ออกมาจาก iPhone เลยไม่ได้ใช้
  • iStat Menus – ไม่รู้ลืมไปได้ไงรอบที่แล้ว ใช้สำหรับดู ความเร็ว network, พื้นที่ฮาร์ดดิสก์ว่าใช้ไปเท่าไหร่แล้ว ความร้อน … สารพัดที่อยากรู้เกี่ยวกับเครื่องตัวเอง
  • Kaleidoscope – ใช้สำหรับ diff change เวลารวมโค้ดแล้วเจอ conflict
  • Sequel Pro – แต่ก่อนใช้ MySQL Workbench แต่ crash บ่อยแถม Sequel Pro หน้าตาดูดีแล้วด้วย เลยย้ายมาใช้ ความสามารถแทบจะเท่าเทียมกัน แต่หน้าตาดูดี แต่ไม่ดื้องอนปิดโปรแกรมไปดื้อๆ
  • Speed download – อันนี้คือสิ่งที่เขียนตกไปจากคราวที่แล้ว เป็นโปรแกรมช่วยดาวโหลด ได้มากับ Bundle ซักอันนึง

เขียนมาสองรอบเริ่มอยากเขียนต่อแต่เป็นของ iPhone บ้างแต่พอเปิด iTune แล้วคิดว่า ไว้คราวหน้าดีกว่า เพราะมันเยอะเหลือเกิน (แอบตกใจว่า เสียตังให้ Apple เยอะขนาดนี้แล้วหรอนี่!) คงคัดมาเฉพาะบางส่วนที่ใช้ถึงปัจจุบัน (เอ หรือเขียนรีวิวมันทุกตัวเลยดี)

* : เพิ่มเติมภายหลัง

Read full story Comments { 2 }

JMeter AMF Sampler

เนื่องจากต้องทำ Load Test แล้วหา JMeter Sampler ที่ใช้กับ AMF ง่าย ๆ ไม่ได้ (ส่วนใหญ่ต้องตั้ง HTTP Server มาดัก request แล้วเอาไป replay ซ้ำ) เลยเขียนเองซะเลย เสียเวลาในการทำงานต่าง ๆ ไปอาทิตย์เต็ม ๆ แต่ก็คงคุ้มกับการทำมั้ง

ใช้งาน

  1. ดาวโหลด amf.jar ไปวางไว้ที่ directory /lib/ext ของ JMeter แล้วก็ขยายเอา jar ออกมา
  2. ดาวโหลด flex-messaging ไปวางไว้ที่ directory /lib ของ JMeter แล้วขยายเอา jar ออกมา ไฟล์นี้สามารถดาวโหลดจากเว็บ Adobe ได้ตรง ๆ ที่ project BlazeDS เพียงแต่ จะไม่สามารถใช้กับ GraniteDS ได้เพราะมีบาง attribute ที่ไม่เหมือนกัน
  3. เปิด JMeter ขึ้นมา แล้วเพิ่ม Sampler ต่าง ๆ จะได้เหมือนภาพด้านล่าง
    1. Address คือที่อยู่ของ AMF Servlet
    2. Service คือชื่อของ class ที่ประกาศใน services-config.xml
    3. Method คือชื่อ method ในคลาส
    4. Arguments คือ Arguments ใน method เรียงตามลำดับจากบนลงล่าง
  4. รันแล้วดูผลลัพธ์ใน View Results Tree

สิ่งที่ยังไม่ได้ทำ

  1. ใส่ Argument เป็น Object เพื่อส่งไปยัง Server
  2. Arguments จริง ๆ ไม่จำเป็นต้องใส่ชื่อ เพราะขึ้นอยู่กับลำดับชั้น คิดว่าจะเอาออกในภายหลัง
  3. ทดลองกับ GraniteDS เท่านั้น ยังไม่ได้ลองกับ Adobe BlazeDS และ Adobe Live Cycle

สำหรับคนที่จะเอาไปทำต่อก็ clone source ได้จาก AMF Project อยากได้คนช่วยทำเยอะ ๆ เพราะคิดว่ามีบั๊กอยู่พอสมควร ส่วน source ที่แก้ใน Flex Messaging จะเอามาแปะในภายหลัง ว่าแก้อะไรไปบ้าง :)

เพิ่มเติม : ได้รับเสียงบ่นพอสมควรว่าเอาไปใช้ไม่ได้ เลยเอาไฟล์ที่ทำแล้วได้มาเพิ่มไว้หน่อย เผื่อเอาไปดูแล้วแก้ไขกันต่อไป

Read full story Comments { 2 }