Spec ขนาดนี้จะพอไหมคับ

คือผมมีเว็บใหญ่อยู่ครับ
ใช้ IPB Board
ตอนนี้มีคนออนพร้อมกัน (15 นาที) ประมาณ 1000-1800
มีการคิวรี่ SQL วันละ 15 ล้านครั้ง
Bandwidth เดือนละประมาณ 500 GB

Spec เครื่อง Dell PowerEdge 850
Pentium D 3.0
Ram ECC 2 GB

ถ้าเกิดว่าจะเพิ่มแรมเป็น 4 GB จะรองรับไหวไหมครับ

หรือท่านใดมีความเห็นว่าอย่างไรคับช่วยชี้แนะด้วยคับ

ขอแสดงความนับถือ

ขอรายงานสเปคเครื่องเดิม สภาพโหลดการใช้งาน อาการที่ระบุว่าเราต้องอัพเกรดเครื่อง จะได้ช่วยดูสเปคให้ได้ชัดเจนกว่านี้ครับ

Spec เครื่อง Dell PowerEdge 850
Pentium D 3.0
Ram ECC 2 GB

อาการที่ระบุว่าต้องอัพเกรดเครื่องคือ Load เริ่มสูงขึ้นคับ เฉลี่ยอยู่ที่ 5.00 คับ

Load สูงสุดอยู่ในช่ง 20-00-02.00 คับ 10 กว่าๆ
บางครั้งมีอาการเข้าไม่ได้ (นานๆครั้งครับ)

ขอโทษทีครับที่อ่านไม่ละเอียด ก็สเปคนี้นี่หว่าที่มีปัญหา
ขั้นตอนแรก คงเครื่องเดิมไว้สำหรับงาน httpd และเพิ่มเครื่องใหม่เข้าไปแยก mysql server ออกมาอีกเครื่องครับ ram อย่างน้อยๆ ก็ 2GB หากได้ 4GB จะดีมากครับ

การขยายสเปคเครื่อง โดยการเปลี่ยนเครื่อง ไม่ได้ช่วยอะไรมากนักครับ สู้การแบ่งภาระโหลดไปอีกเครื่องไม่ได้ครับ

เอ… spec พอๆ กับเว็บ thaicybergames นะครับ
ลอง optimize ดีๆ น่าจะอยู่

เปลี่ยน apache มาเป็น lighttpd ได้จะดีมาก
ช่วยเรื่อง memory ได้เยอะเลย ทำให้เหลือ memory ไว้ให้ mysql อีกเยอะ

load avg ของ thaicybergames เครื่องเว็บ peak ไม่เกิน 1.5
(ไม่นับช่วง backup ข้อมูลครับ แต่ก็ไม่เกิน 10)

โหลด 5 เด็กๆครับ ปกติเครื่องจะอึ้งไปเมื่อโหลดเกิน 20 ไปแล้ว
ลองดู swap ถ้าใช้ยังไม่ถึง 50-100MB ยังไม่จำเป็นต้องเพิ่ม ram
ให้ปิด keepalive off ซะ หรือลด max keepalive request ให้ต่ำๆ 100 เดียวพอ
ดูอาการซัก 2-3 วัน ได้เรื่องยังไงมารายงานอีกทีครับ

ตัวอย่างที่ทำงานหนักแบบปกติอ่านะ at ram 2GB

last pid: 17746;

ram disk คือการเอา ram มาทำเป็น disk ใช้งานอีก drive นึงครับ จะช่วยเพิ่มความเร็วในการอ่านเขียนได้เร็วกว่าใช้ HD มาก แต่พอ reboot ข้อมูลใน ramdisk จะหายไป
ส่วน swap เป็น virtual memory ครับ คือการเอาพื้นที่ HD มาทำเป็น ram ประโยชน์คือเวลา ram จริงไม่พอก็จะมาใช้พื้นที่ใน hd แทน ram แต่เนื่องจากความเร็ว hd ช้ากว่า ram มากประสิทธิภาพจึงตกลงไป

คุณ devone เข้าใจถูกต้องแล้วครับ แต่เรียกชื่อผิดไปหน่อย

ขอบคุณครับที่ช่วยเสริมความเข้าใจให้ถูกต้อง โดยเฉพาะการเรียกชื่อครับ

ต่อครับ…
เรื่อง DBMS หรือ Database Management System เป็นอีกแขนงหนึ่งที่อยู่ในระดับซีเรียสคือ ได้แยกตำแหน่ง dba ออกมาจาก sysadmin เลยนะครับ

ในองค์กรใหญ่ๆที่ใช้ dbms กันอย่างเต็มตัว จะมีเจ้าหน้าที่ DBA (Database Admin) คอยดูแลและบริหารจัดการ Database Server

โดยปกติแล้ว DB Server เชาจะไม่ให้ระบบหน่วยความจำ นำ swap ram มาใช้หรือลงไปแตะกับ swap มากสักเท่าไรครับ ส่วนมาก swap ram เกิดขึ้นจากการ peak ของการใช้งานที่หนาแน่นในชั่วขณะหนึ่งครับ

ลองใช้โปรแกรม mytop เรียกดูการ query table ของ mysql realtime ดูครับ จะทำให้พอทราบได้ว่า มี user รายไหนเขียนโปรแกรม query ดีไม่ดีมากน้อยแค่ไหน พวกที่ใช้ phpnuke นี่เห็นๆเลยว่าใช้ database มากครับ

หากเว็บไซต์ดังกล่าว…ใช้โปรแกรมพวก cms และ hit ขนาดนั้น ก็คงต้องจัดการกับ mysql server อย่างดีหน่อยครับ เพราะใน 1 hit มันไม่ใช่ transfer ข้อมูล 10K-50K อะไรแค่นี้ครับ ใน 1 hit มันมีขบวนการใช้ process + allocate memory มากกว่าที่คิดเยอะครับ กับไซต์จำพวก cms อ่านะ

จากประสพการณ์ที่ทำตรงนี้มา ผมไม่ค่อยเห็น httpd ล่มครับ เห็นแต่ mysql ใช้งานมากจนใช้หน่วยความจำจนหมด เลยทำให้ services อื่นๆ พากันอดยากปากแห้งเฉาตายตามๆกันไปครับ ไม่เชื่อลองสังเกตุสิครับ
เว็บ THT เองก็เคยเป็น httpd เปิดได้ แต่ระบบแจ้งว่าไม่สามารถ connect db ได้เพราะว่ากำลัง busy อ่านะ…
ตอน busy นี่แหละจ้า…หน่วยความจำไม่พอแล้ว

เครื่องลูกค้าผมที่เป็น colocation (ไม่ได้ cp) ตอนแรกๆอยู่ใหม่ๆก็ทำงานลื่นดีครับ พอหลายปีเข้า เว็บใหญ่มากคนเข้ามาก เว็บล่มรายครึ่งวัน… ลูกค้าจะเปลี่ยนเครื่องให้ใหญ่ขึ้น ผมบอกว่าเปลี่ยนเครื่องสู้ซื้อเครื่องใหม่มาแยก mysql ออกไม่ได้หรอกครับ เขาก็เชื่อผม ก็เพิ่มเครื่องเข้ามา ลูกค้ารายนี้อยู่กันมา 6 ปีแล้วครับ
ขอโทษอ่านะ สเปคเครื่อง httpd มันแค่ pentuim III ram 1G เองครับ และ db server ก็แค่ Pentuin-4 ram 2G เองครับ ปรับเปลี่ยใช้งานมา 3 ปี ไม่เคยมีปัญหาอะไรอีกเลยครับ เครื่อง httpd ผมใช้ FreeBSD 4.8 เครื่อง mysql ใช้ Redhat Enterprise 3 (up เป็น 4ES แล้ว)

ลองเปิดดูหน้า server status ของ apahce เช็ค Slot ดูได้ครับ ตัว “W” ที่ wait รอจะไม่มีมากเหมือนเครื่องรวมมิตรเซอร์วิทครับ การที่ status “W” มีมาก…เนื่องมาจาก httpd ร้องขอ mysql แล้ว mysql query ไม่เร็วพอ และพอมี hit หลายๆ hit ซ้อนกันเข้าไป มันก็ รอ กันไป มากๆเข้า Slot ใน apache เต็ม ก็เลยพากันช้าไปหมด ระบบชะงักงันอ่านะ

แรกๆ เราจะเห็นการเรียก mysql จาก localhost (mysql ในเครื่องเดียวกัน) นั้นเร็วๆกว่ามากๆ มากกว่าแยก db ออกไปอีกเครื่องครับ
แต่พอ httpd ทำงานมากๆ รับ connection มากๆ (คือ hit มาก) คราวนี้แหละ เครื่องที่แยก db server จะแซงหน้าแบบนิ่มๆครับ ฝ่าย httpd ก็ทำงานไปเถอะ mysql ตั้งท่ารับ query แบะท่ารับแล้วส่งเดต้าให้ httpd อย่างเดียว ไม่ต้องรอกันทำงานครับ ทำให้การทำงานมีความเร็วเสมอต้นเสมอปลายในระดับหนึ่ง จนกว่า… จนกว่า load มันจะไปแตะราวๆ 10-30 ถึงจะเกิดอาการหน่วงๆและช้าให้เห็นอย่างชัดเจนครับ

หากเราแยก db server ออกมาครั้งแรก… เราจะเห็นว่าเว็บเปิดช้ากว่าเดิมเล็กน้อยครับ เพราะนั้นคือมันเรียกข้อมูล mysql ข้ามเครื่องกันครับ หากแต่ใช้ lan card gigabit นะ เราจะไม่รู้สึกเลยครับ สมัยนี้เทคโนโลยี่ทันสมัยมาก ทำ load balancer กันก็ทำกันได้ไม่ยากแล้ว น่าจะมองๆระบบนี้เอามาแก้ปัญหากับเว็บใหญ่ๆหรือโฮสใหญ่ๆก็ดีนะครับ

+1 ท่าน Devone

เยี่ยมไปเลยครับ ได้ความรู้อีกแล้ว

แต่ขอโทษนะครับ ตรง apache status ที่บอกว่า w เป็น wait ทำไมผมดูแล้วเป็น “sending reply” ส่วน wait จะเป็น “_” หรือว่าแต่ละเครื่องไม่เหมือนกันครับ

ด้วยความเคารพนะครับ ไม่ได้จับผิดนะครับ

[quote author=WebHostDD link=topic=5479.msg48697#msg48697 date=1171444877]
เยี่ยมไปเลยครับ ได้ความรู้อีกแล้ว

แต่ขอโทษนะครับ ตรง apache status ที่บอกว่า w เป็น wait ทำไมผมดูแล้วเป็น “sending reply” ส่วน wait จะเป็น “_” หรือว่าแต่ละเครื่องไม่เหมือนกันครับ

ด้วยความเคารพนะครับ ไม่ได้จับผิดนะครับ

แล้วถ้าเปิด apache status ไว้นี่ มีผลเสียอะไรมากหรือเปล่าครับ

ฮ่าฮ่า…ไม่แนะนำอ่านะ หากอยากจะเปิดจริงๆ ให้กำหนดให้เปิดได้เฉพาะ ip ครับ กำหนดใน httpd.conf ตรง server-status นั้นแหละ อิอิ

เอาความลับมาขายหมดแล้วผมจะเอาอะไรไปหากินอ่ะ :wub:

แซวเล่นครับผม

ผมเปิดเฉพาะ ip อยู่แล้ว แหะๆ

ขอบคุณมากครับ

[quote author=WebHostDD link=topic=5479.msg48701#msg48701 date=1171446541]
ผมเปิดเฉพาะ ip อยู่แล้ว แหะๆ

ขอบคุณมากครับ