ทำอย่างไรให้ระบบทำงานราบรื่น

เริ่มโพสต์โดย ลุงซัน, 16 ก.ค. 2008, 20:50 น.

0 สมาชิก และ 1 บุคคลทั่วไป กำลังเปิดอ่านโพสต์นี้

ลุงซัน

#15
อ้างคำพูดจาก: EaRthCh!E* เมื่อ 18 ก.ค. 2008, 18:59 น.
อ้อ เปล่าๆๆ ครับ คือผมยังไม่มีความรู้ด้านนี้เลยซักนิดน่ะครับ

เลยกลัวจะอ่านไม่รู้เรื่องเพราะไม่มีพื้นฐาน
ผมตั้งใจเป็นแค่เป็นแนวคิดเลยอยากให้อ่านได้ทุกคน(แม้จะหลีกเลี่ยงศัพท์เทคนิคไม่ได้)
เฉพาะฉนั้นยังยืนยันคำเดิม ถ้าอ่านไม่รู้เรื่องแสดงว่าผมยังเขียนได้ไม่ดีพอ  :21:
http://www.thaibuddy.com (ฟรีดิกชันนารี่ ชี้แล้วแปล)
ผมรู้เล็กน้อย

poloh

ก่อสร้างกับทำลาย เหมือนที่ลงมือ ต่างที่การกระทำ

คนตาบอดข้างเดียว

เข้าใจว่าเขียนดีแล้วครับ แต่ผมโง่เกินไป
ในหมู่คนตาบอด คนตาบอดข้างเดียวได้เป็นราชา

ลุงซัน

อ้างคำพูดจาก: ศิษย์มีครู เมื่อ 19 ก.ค. 2008, 01:13 น.
เข้าใจว่าเขียนดีแล้วครับ แต่ผมโง่เกินไป
เอ๋า
ถ้าสารภาพจริงๆนะ ผมยังรู้สึกว่ามันยังดีไม่พอ
แต่ถ้าเอาแบบพอใจ(ตัวเอง)อาจยาวเหยียด จนน่าเบื่อ
เลยอยากให้ถามหรือเสนอแนะเป็นประเด็นๆไป(เพื่อผมจะได้นำไปปรับปรุง หรือ ขยายความ)  :52:
http://www.thaibuddy.com (ฟรีดิกชันนารี่ ชี้แล้วแปล)
ผมรู้เล็กน้อย

เทอร์โบบูสเตอร์

กาก

Earthchie

บทแรกเข้าใจนะครับ

เข้าใจง่ายด้วย  :45:

ชื่อ Earth ครับ เรียกเอิดก็ได้ | Earthchie's Blog

Tee++;

#21
สนใจมากครับ กำลังเป็นเรื่องที่หาข้อมูลอยู่พอดีเลยครับ สมัครสมาชิกเพื่อมาตอบกระทู้นี้โดยเฉพาะเลย   :45:

ลุงซัน

#22
มาแจ้งข่าวสักนิดครับ เดี๋ยวจะสงสัยว่าหายไปไหน
เนื่องจากการได้รับเงินโบนัส ได้เงินค่าตำแหน่ง และ ได้ค่าสอนพิเศษ เลยพอมีเงินไปซื้อเครื่อง Wii (แต่มือสอง เพราะอยากได้ menu english)
หลังจากอิจฉาตาแอนนนนนมานาน ก็ลงมือเล่นซะไปหลายๆครั้ง โดยเฉพาะเกมตี baseball ตีอย่างสุดแรง
ผลก็คือนอนระบ่มไปหมด ปวดหลัง ปวดตัวร้องโอ๊ยๆทรมานจัง (สังขารไม่เที่ยง อายุไม่อำนวยกับการออกแรงมากๆ)
เลยมาแจ้งเหตุว่าไม่ได้หายไปไหน ยังมีต่อแต่ขออีกนิด
พรุ่งนี้ผมสอนเกือบทั้งวัน บ่ายแก่ๆก็มีประชุมต่อ
จึงคาดว่าวันศุกร์จะมาเล่าบทที่ 2 ให้ฟังครับ (ถ้าไม่ทันก็เลยไปเสาร์-อาทิตย์)
(หัวข้อที่ 3 ในบทที่ 2 เขียนหนังสือได้เป็นเล่ม คงต้องอดใจเอาแค่แนวคิด แต่จะพยายามบอกแหล่งที่จะหาข้อมูลเพิ่มให้ ถ้าลืมก็ทักทวงได้นะครับ)
note:
ผมเปลี่ยนหัวข้อในบทที่ 9 เล็กน้อยครับ จริงๆในทุกๆหัวข้อสามารถเขียนหนังสือออกมาได้เป็นเล่มเลย
ถ้ามีโอกาสอาจเขียนเรื่อง asp.net ก่อน แล้วค่อยตามด้วย PHP(ต้องศึกษาไปด้วย)
http://www.thaibuddy.com (ฟรีดิกชันนารี่ ชี้แล้วแปล)
ผมรู้เล็กน้อย

นายโอ้เอ้

Today you , Tomorrow me.

ลุงซัน

อ้างคำพูดจาก: นายโอ้เอ้ เมื่อ 24 ก.ค. 2008, 02:23 น.
วัยรุ่นจริงๆ  :30:
หมายถึง นายโอเอ้เหรอ?
ดูหน้าซิ
แต่พูดไปแล้ว ผมไม่เคยทันเทศกาลอะไรของ f0nt เลย  :43: (ตอนนี้เห็นเริ่มแต่งหน้ากันอีกแล้ว)
-------------------
กลับมาทีเอารูปมาฝาก (เพื่อใครจะคิดทำระบบที่ไม่มีวันล่ม)


ที่มา Microsoft

เรื่องที่มา ผมจะพยายามอ้างอิงไว้ แต่ให้สังเกตุที่มาด้วยนะครับ(เพราะส่วนมากจะเอียงเข้าข้างตัวเองทั้งนั้น แต่ก็พอที่จะใช้เป็นข้อมูลได้ เพราะไม่อย่างนั้นคงมีคนแย้งแน่ๆ)
http://www.thaibuddy.com (ฟรีดิกชันนารี่ ชี้แล้วแปล)
ผมรู้เล็กน้อย

ตอ

มานั่งรออ่านต่อด้วยคนครับ

ลุงซันไม่ได้เขียนไม่ดีนะ คือว่าผมเองก็ไร้พื้นฐานเหมือนกัน
แต่จะพยายามตามครับ
น่าสนใจดี

ขอบคุณครับ :46: :46:
DiggityDaw aka วัวโหดด

ลุงซัน

#26
เดิมว่าจะเขียนตั้งแต่อาทิตย์ที่แล้ว
แต่ดันนอนในห้องปิด ไม่เปิดแอร์ ไม่เปิดหน้าต่าง(ลืม)
ตื่นมาก็มึนๆอีกวันก็ไม่สบาย สรุปว่ายังงงๆตัวเอง  :49:
ขออภัยที่หายไป
----------------------
หลังจากหายไปสักพัก มาขอต่อกันนะครับ
ก่อนอื่นขอเริ่มจากศัพท์ (พอจะเขียนต่อ หาข้อมูลเพิ่ม ก็ทำให้นึกได้ว่าลืมศัพท์ไปเยอะ เลยเอามาต่อกับบทที่ 1 ครับ)

ความสามารถในการปรับขนาด(Scalable/ Scalability)

"Fast enough to handle expected load.  Grow easily when load grows"
Paul Greenfield, CSIRO

"Scalability is how your application behaves as the number of users increases"
Clint Edmonson, clinted@microsoft.com

หลายๆครั้งเรามักจะเรียกทับศัพท์ว่าปรับสเกล การปรับขนาดนี้ต้องการมุ่งหวังให้ระบบสามารถปรับขนาดให้สามารถรองรับจำนวนผู้ใช้มากขึ้นหรือรองรับภาระงานที่มากขึ้น

Scalability= Increase serving capacity
High Availability= Increase uptime

ประสิทธิภาพ(Performance)

Performance is how your application behaves when there is just one user
"Clint Edmonson, clinted@microsoft.com"

"Aim for 'enough' of each but not more."
Paul Greenfield, CSIRO

ประสิทธิภาพเราจะเน้นว่าระบบ(หรือโปรแกรมประยุกต์)ของเรานั้นสามารถทำงานได้ดีขนาดไหน หลายครั้งที่เราพบว่าระบบของเราทำงานได้มีประสิทธิผล(Effective) แต่ยังไม่มีประสิทธิภาพเพียงพอ ในงานสมัยใหม่ที่ต้องการความรวดเร็วตอบสนองผู้ใช้ที่ใจร้อนเราต้องคำนึงถึงประสิทธิภาพของระบบด้วย หลายครั้งที่การปรับขนาด (Scalability) อยู่คู่กับประสิทธิภาพทำให้เกิดความเข้าใจผิดว่ามันคือสิ่งเดียวกัน แต่ในหลายๆครั้งเรามักจะใช้ประสิทธิภาพกับระบบโดยรวม หรือ แม้กระทั่งการทำงานขององค์กรที่เรามักวัดออกมาในรูปของ Key Performance Indicator (KPI) คือ เราควรกำหนดว่าอะไรคือประสิทธิผลและประสิทธิภาพของระบบ

http://www.thaibuddy.com (ฟรีดิกชันนารี่ ชี้แล้วแปล)
ผมรู้เล็กน้อย

ลุงซัน

#27
การเกิดขึ้นในเวลาเดียวกัน(Concurrency)

Dijkstra -- "Concurrency occurs when two or more execution flows are able to run simultaneously"

Concurrency: acting together, as agents or circumstances or events. WordNet® 3.0, Princeton University.

Simultaneously: Happening, existing, or done at the same time. American Heritage Dictionary

การเกิดขึ้นหรือทำงานในเวลาเดียวกัน (Concurrency) เราจะวัดจากงานหลายๆงานหรือผู้ใช้หลายๆคนเข้ามาใช้ระบบในระยะเวลาเดียวกัน(Simultaneously) ระบบที่ดีควรคำนึงถึงกรณีที่ผู้ใช้เข้าใช้งานระบบของเราในเวลาเดียวกัน ตัวอย่างเช่นระบบของระบบสามารถตอบสนองการเรียกใช้งานได้ดี (request/second) แต่ไม่สามารถตอบสนองได้ดีกรณีของผู้ใช้หลายๆคนเข้ามาใช้ระบบ(เรามักใช้เทคนิด scalable,Load Balance ช่วยในกรณีมีผู้ใช้จำนวนมาก)

การทำงานแบบขนาน(Parallelism)

    "Simultaneous execution of the same task!"

การทำงานแบบขนานเรามักจะใช้ในงานคำนวณทางวิทยาศาสตร์ โดยกระจายงานของเราออกไปประมวลผลในแต่ละหน่วยประมวลผล แล้วรวมผลลัพท์กลับมาเป็นผลตามที่ต้องการ หนังสือเล่มนี้ไม่ได้กล่าวถึงการประมวลผลแบบขนานจึงขอละเว้นไว้ ณ ที่นี่

การทดสอบของภาระ(Load Test)/ การทดสอบของภาวะบีบคั้น(Stress Test)

"Load is how many simultaneous users your application can serve" Clint Edmonson, clinted@microsoft.com
"Stress is how well your application behaves when resources become limited" Clint Edmonson, clinted@microsoft.com

นอกจากการทดสอบประสิทธิภาพ(Performance Test) เรามักจะได้ยินคำว่า Load Test และ Stress Test การทดสอบภาระเราจะเน้นว่าระบบของเรารับภาระได้ดีขนาดไหนในกรณีที่มีผู้ใช้ระบบจำนวนมาก ขณะที่การทดสอบของภาวะบีบคั้นเราจะทดสอบระบบในกรณีที่ระบบของเรามีทรัพยากรระบบจำกัด (เช่น เราซื้อเครื่องมา 1 เครื่องความเร็ว 2.4 GHz RAM 2 G ด้วยระบบขนาดนี้เราจะรองรับ Stress Test ได้ขนาดไหน)

Mean Time Between Failure: MTBF
ค่าเฉลี่ยของระยะเวลาที่เกิดการผิดพลาด (MTBF) เราจะนิยามง่ายๆว่าระบบหรือฮาร์ดแวร์ของเราสามารถใช้งานได้นานขนาดไหนก่อนเกิดข้อผิดพลาด ตัวอย่างเช่นระบบของเราเปิดใช้งานไป 100 ชม. แต่เกิดข้อผิดพลาดขึ้น 2 ครั้ง เราจะได้ MTBF =100/2 = 50 ชม. นั้นก็คือระบบของเราจะมีค่าเฉลี่ยใช้งานได้ 50 ชม. ก่อนเกิดข้อผิดพลาด (จะมีใครตรวจสอบ MTBF ของ Hard Disk ก่อนซื้อไปใช้งานไหม?)

Mean Time to Repair (MTTR)
ค่าระยะเวลาเฉลี่ยต่อการเข้าไปซ่อมต่อครั้ง ก็คือระยะเวลาเฉลี่ยที่ต้องใช้ในการเข้าไปซ่อมแซมระบบหรือฮาร์ดแวร์ของเรา ยกตัวอย่างเช่น ครั้งแรกใช้เวลา 30 นาที ครั้งที่สองใช้เวลา 10 นาที  ครั้งที่สามใช้เวลา 20 นาที เราจะได้ MTTR=(30+10+20)/3=20 นาที

Mean Time To Failure (MTTF)
ค่าระยะเวลาเฉลี่ยที่ระบบหรือฮาร์ดแวร์หยุดทำงาน ซึ่งก็คือ MTTR รวมกับเวลาที่เกิด Downtime ด้วยสาเหตุอื่นๆ ค่าของความสามารถใช้งานระบบ(Availability) เราจะวัดจาก
  Availability=MTBF/(MTBF+MTTF) ซึ่งก็คือค่าในตาราง 1.1 นั้นเอง

ความน่าเชื่อถือของระบบ (Reliability)
"Reliability measures the ability of a system to function continuously without interruptions", High Availability Fundamentals, Sun BluePrints™

หลายครั้งที่เราคิดว่าความน่าเชื่อถือของระบบ (Reliability) กับความสามรถในการใช้ระบบ(Availability)นั้นเป็นเรื่องเดียวกัน จริงๆแล้วเราสามารถทำให้ระบบสามารถใช้งานได้แม้กระทั่งระบบความน่าเชื่อถือของระบบไม่สูง (เช่นใช้เครื่อง PC ธรรมดาหลายตัวทำ Server โดยไม่ต้องใช้ Server Spec ในระบบ) เรามักจะใช้อุปกรณ์ที่มีความน่าเชื่อถือสูงในระบบที่อยู่ในระยะไกล(Remote Site) ทั้งนี้เพราะระบบที่อยู่ระยะไกลต้องเสียเวลาในการบำรุงรักษาระบบ รวมถึงการแก้ปัญหาเมื่อระบบไม่สามารถใช้งานได้ เราสามารถประมาณความสัมพันธ์ของความน่าเชื่อถือของระบบกับความสามรถในการใช้ระบบได้ดังนี้

High Availability Fundamentals, Sun BluePrints™
http://www.thaibuddy.com (ฟรีดิกชันนารี่ ชี้แล้วแปล)
ผมรู้เล็กน้อย

ลุงซัน

#28
บทที่ 2 Web Servers
หลังจากนักฟิสิกส์นาม Tim Berners-Lee ได้ค้นคิด HTML โลกเราก็รู้จัก web page หลังจากนั้น National Center for Supercomputing Applications(NCSA)ทำให้เราได้รู้จัก Web Browser (NCSA Mosaic) และ Web Server (NCSA HTTPd) แต่ NCSA HTTPd ยังมีจุดอ่อนที่ต้องแก้ไข นาย Robert McCool ซึ่งมีส่วนเกี่ยวข้องกับาการพัฒนา  NCSA HTTPd เมื่อออกจาก NCSA ก็ยังต้องการแก้ไข NCSA HTTPd ความตั้งใจเดิมของ Robert นั้นต้องการสร้างส่วนแก้ไข (a Patch) โดยตั้งชื่อโปรแกรมตัวเองว่า Apache (A Patch of NCSA HTTPd, A PAtCHy) โดยมีคนเข้าร่วมหลายคน ไปๆมาๆเลยกลายเป็น Web Server ทั้งตัว แถม Apache กลายเป็นมาตราฐานของ Web Server ของฝั่ง Unix/Linux ที่ใครๆก็รู้จัก
   การออกแบบระบบให้สามารถใช้งานได้สูง ถ้าการใช้งานระบบกระทำผ่านเวป ส่วนสำคัญของระบบก็คือ Web Server นั้นเอง

Apache 1.3 and 2.0

http://www.linuxjournal.com/article/4559
ตามที่กล่าวมา Apache ถูกสร้างโดยมุ่งที่การแก้ปัญหาของ Web Server เดิม (NCSA) จึงทำให้ Apache ถูกพัฒนาอย่างมากใน Apache รุ่นถัดมา โดย Apache รุ่นแรกจะมีการทำงานแบบสร้างตัวเอง(Fork) เพื่อรับงานที่มากขึ้น ในขณะที่ รุ่น 2.0 มีโหมดการทำงานที่เรียกว่า Worker ซึ่งใช้เทคนิคแบบ Multithread ทำให้ Apache มีประสิทธิภาพที่ดีขึ้น

Prefork
•   High memory usage
•   Highly tolerant of faulty modules
•   Highly tolerant of crashing children
•   Fast
•   Well-suited for 1 and 2-CPU systems
•   Tried-and-tested model from Apache 1.3
•   "You'll run out of memory before CPU."

Worker
•   Low to moderate memory usage
•   Moderately tolerant to faulty modules
•   Faulty threads can affect all threads in child
•   Highly-scalable
•   Well-suited for multiple processors
•   Requires a mature threading library
(Solaris, AIX, Linux 2.6 and others work well)
•   Memory is no longer the bottleneck.


จากการทดสอบของ camelrichard (http://www.camelrichard.org/apache-prefork-vs-worker) ได้ผลได้ดังนี้
-------------------------------------------------------------
Siege results for prefork:
-------------------------------------------------------------
Lifting the server siege...      done.                                                   
Transactions:                   6045 hits
Availability:                 100.00 %
Elapsed time:                 300.38 secs
Data transferred:               0.25 MB
Response time:                  0.50 secs
Transaction rate:              20.12 trans/sec
Throughput:                     0.00 MB/sec
Concurrency:                    9.97
Successful transactions:        6045
Failed transactions:               0
Longest transaction:           10.13
Shortest transaction:           0.00
-------------------------------------------------------------
-------------------------------------------------------------
Siege results for worker:
-------------------------------------------------------------
Lifting the server siege...      done.                                                     
Transactions:                  11024 hits
Availability:                 100.00 %
Elapsed time:                 300.24 secs
Data transferred:               0.46 MB
Response time:                  0.27 secs
Transaction rate:              36.72 trans/sec
Throughput:                     0.00 MB/sec
Concurrency:                    9.91
Successful transactions:       11024
Failed transactions:               0
Longest transaction:           11.92
Shortest transaction:           0.00
-------------------------------------------------------------
ซึ่งพบว่าการทำงานแบบ Worker นั้นให้การตอบสนองได้ดีกว่าแบบ Prefork เกือบ 2 เท่า แต่เรามักจะได้ยินว่าถ้าเราใช้ PHP ให้ตั้งค่าเป็นแบบ Worker ทั้งนี้เหตุผลหลักก็เพราะ PHP ก่อนรุ่น 4.3 ยังมีปัญหากับการทำงานแบบ Worker (http://th2.php.net/manual/en/install.unix.apache2.php) และ การทำงานแบบ Prefork นั้นมีความน่าเชื่อถือได้มากกว่า Worker (ถ้า Module หรือ Child Process เกิดข้อผิดพลาด)
http://www.thaibuddy.com (ฟรีดิกชันนารี่ ชี้แล้วแปล)
ผมรู้เล็กน้อย

ลุงซัน

#29
Zeus/LiteSpeed/lighttpd
http://www.zeus.com
http://litespeedtech.com/
http://www.lighttpd.net/

เนื่องจาก Apache ถูกสร้างโดยมุ่งแก้ปัญหาของ NCSA HTTPd เป็นหลักจึงทำให้มีผู้พัฒนาอื่นแทรกตัวขึ้นมาแข่งกับ Apache โดย Web Server ตัวแรกที่นิยมใช้ในธุรกิจก็คือ Zeus เพราะให้การตอบสนองของการเรียกใช้งานของผู้ใช้ได้ดีกว่า Apache มาก อย่างไรก็ตาม Zeus หยุดพัฒนาที่รุ่น 4.3 จึงทำให้ทั้ง Apache และ Zeus มีคู่แข่งเพิ่มขึ้นมาซึ่งได้แก่ LiteSpeed (Free/Commercial) และ Lighttpd (Opensource) โดยทั้งคู่มีประสิทธิภาพที่ดีกว่า Apache




http://www.thaibuddy.com (ฟรีดิกชันนารี่ ชี้แล้วแปล)
ผมรู้เล็กน้อย

SMF 2.1.7 © 2026, Simple Machines