ช่วยวิเคราะห์ Server-Status แล้วช่วยจูน MPM ให้ผมได้มั้ยครับ

คือต้องบอกก่อนว่าผมไม่มีความรู้เรื่องระบบ เรื่องการคอนฟิกระบบ Linux มาก่อนเลยครับ แต่ต้องมารับผิดชอบงานในออฟฟิศที่เกี่ยวกับเรื่องพวกนี้ ก็อาศัยหาข้อมูลตามเน็ตเอาครับ

เครื่องที่ผมใช้ตอนนี้เป็น Dell R210 แรม 8GB ครับ ลง CentOS 5.4 + ISPConfig 2 มีเว็บประมาณ 6 เว็บ UIP รวมทั้งหมดต่อวัน 35K - 40K ส่วน MySQL ต่อขาหลังอยู่อีกเครื่องครับ

นี่คือข้อมูลจาก Server-Status
Current Time: Tuesday, 16-Mar-2010 10:34:17 ICT
Restart Time: Monday, 15-Mar-2010 13:01:24 ICT
Parent Server Generation: 0
Server uptime: 21 hours 32 minutes 53 seconds
Total accesses: 5249437 - Total Traffic: 53.8 GB
CPU Usage: u1065.47 s106.79 cu.18 cs0 - 1.51% CPU load
67.7 requests/sec - 0.7 MB/second - 10.7 kB/request
37 requests currently being processed, 30 idle workers

อันนี้จาก top
top - 10:41:49 up 2 days,

[quote author=LiLO link=topic=26519.msg251675#msg251675 date=1268711118]

คือต้องบอกก่อนว่าผมไม่มีความรู้เรื่องระบบ เรื่องการคอนฟิกระบบ Linux มาก่อนเลยครับ แต่ต้องมารับผิดชอบงานในออฟฟิศที่เกี่ยวกับเรื่องพวกนี้ ก็อาศัยหาข้อมูลตามเน็ตเอาครับ

เครื่องที่ผมใช้ตอนนี้เป็น Dell R210 แรม 8GB ครับ ลง CentOS 5.4 + ISPConfig 2 มีเว็บประมาณ 6 เว็บ UIP รวมทั้งหมดต่อวัน 35K - 40K ส่วน MySQL ต่อขาหลังอยู่อีกเครื่องครับ

นี่คือข้อมูลจาก Server-Status
Current Time: Tuesday, 16-Mar-2010 10:34:17 ICT
Restart Time: Monday, 15-Mar-2010 13:01:24 ICT
Parent Server Generation: 0
Server uptime: 21 hours 32 minutes 53 seconds
Total accesses: 5249437 - Total Traffic: 53.8 GB
CPU Usage: u1065.47 s106.79 cu.18 cs0 - 1.51% CPU load
67.7 requests/sec - 0.7 MB/second - 10.7 kB/request
37 requests currently being processed, 30 idle workers

อันนี้จาก top
top - 10:41:49 up 2 days,

จริงด้วย ผมเพิ่งสังเกต … ปกติมันเป็น 0 ตลอดเลยนะครับ เพิ่งเป็นเช้านี้เอง …งงแฮะ…

ลองเพิ่ม 2 ค่านี้เป็น 2 เท่าดูครับ
MinSpareServers

ขอบคุณครับ เดี๋ยวจะลองปรับแล้ววัดผลดูครับ

เครื่องนี้คือเครื่องหน้าเว็บใช่ไหม และมีอีกเครื่องเป็น mysql server ใช่ไหม

ใช่ครับแยกเครื่องกัน เครื่อง MySQL อยู่อีกตัวนึงต่อขาหลังอยู่ จริงๆ ผมลองค้นหาข้อมูลดูแล้วก็ปรับแต่งไปบ้างแบบลองผิดลองถูกน่ะครับ ผลที่ออกมาก็ตามผลที่โพสไว้ล่ะครับจาก top, server-status แต่ผมไม่รู้ว่ามันดีที่สุดหรือยัง หรือถ้าอยากจะรีดพลังได้สุดๆ กว่านี้จะต้องลองปรับลดตรงไหนบ้าง อย่าง MPM ผมไม่รู้ว่าถ้าปรับตรงนี้จะมีผลยังไง เพิ่มหรือลดค่าตรงไหนมีผลยังไงอ่ะครับ

ไม่รู้ว่าสเปคเครื่องแบบนี้รองรับ UIP ได้สัก 60K ต่อวัน มั้ยครับ ถ้าได้ … ผมตรงปรับเซตอะไรบ้าง

ถ้าใช้เว็บเดียวไม่ลองใช้ nginx phpfastcgi ไปเลยครับ

ถามว่าสุดหรือยัง… ผมว่ายังไม่สุด ยังไม่ได้รีดพลังเท่าไร เพราะผมดูจาก uptime มัน 2 วัน… แต่มีการดึง swap ram ปริมานสูงพอควร โดยเฉพาะหากเครื่องใช้แต่ apache คิดว่ายังปรับไม่ลงจริงๆ

น่าจะเกิดคอขวดหรือเปล่า วงแลน ที่ติดต่อกับ mysql server อีกตัวสายเป็น gigabit หรือเปล่า เช็ค bw ที่วิ่งบนสายแลนมัน peak ที่เท่าไร (ดูได้จาก ifconfig ก็ได้)
สิ่งที่ต้องทำอันดับแรกคือ ทำถนน ให้กว้างก่อน คือสายวงแลนระหว่างสองเครื่องนี้

เครื่องตัวนี้ ตัวที่เป็น app apache ไม่น่าจะใช้แรมขนาด 8GB หมดไปได้ น่าจะเกิดจากคอขวด การส่ง/รับ data req กับ mysql server มากกว่าครับ

ต้องดูว่าเว็บอะไร แต่เท่าที่ดูค่าที่ tuning ของ apache2 ยังไม่ได้เรื่องครับ
น่าจะทำได้ดีกว่านี้ ลองบอกประเภทเว็บมาครับ เดี๋ยวช่วยวิเคราะห์ให้

ลง mrtg จับสถานะให้หมดทุกเครื่องครับ

ใส่ keep alive อยู่รึเปล่าครับ ผมว่าลง mrtg
copy config ทั้งหมด แล้วให้เทพในนี้วิเคราะห์ให้ดีกว่าครับ

นึกถึงเรื่องคอขวดเลยครับ เพราะวงแลนเป็นสาย 100 ธรรมดา -.-’ แบบนี้คงต้องเปลี่ยนตัว Switch ด้วยแน่ๆ เลย

[quote author=HostNeverDie.com link=topic=26519.msg251745#msg251745 date=1268747759]
ใส่ keep alive อยู่รึเปล่าครับ ผมว่าลง mrtg
copy config ทั้งหมด แล้วให้เทพในนี้วิเคราะห์ให้ดีกว่าครับ

จากค่าที่โพสต์มาเป็นช่วงที่ server ทำงานไม่หนักครับ
จะมีก็แค่ร่องรอยของ swap ที่ใช้อยู่สูง น่าจะใช้ตอนที่เครื่องอืดๆนั่นแหละ
จะหาสาเหตุต้องหาตอนที่ server load สูงๆครับ ช่วงที่อืดๆ เอาค่าช่วงนั้นมาดู
ดู server status ดู mysql process list ดู netstat 3 อย่างก็น่าจะพอบอกได้

สาเหตุที่ swap มันขึ้นสูงน่าจะมาจาก maxclients ที่ตั้งไว้ 1024 นั่นแหละ
ปกติใช้อยู่ไม่ถึง 200 พอมีปัญหามันก็ค้างสะสมขึ้นจนเต็ม 1024 ทำให้ ram ไม่พอและใช้ swap ในที่สุด
ลองคิดง่ายๆว่าถ้า httpd 1 client ใช้ ram 8M ถ้า 1024 clients ก็จะใช้ ram หมด 8G
แต่ถ้า httpd 1 client ใช้ ram มากกว่า 8M ram ก็จะไม่พอสำหรับ 1024 clients
ทั้งนี้การปรับจูนก็ต้องขึ้นกับประเภทของเว็บด้วย

ถ้าเว็บฝากรูป max client แบบนั้นก็ถูกแล้วอ่ะครับ ใช้ MaxRequestsPerChild เป็น 0 ถูกแล้ว
แต่ถ้าเว็บทั่วไปปรับ max client มาสัก 300-500 ก็ได้ครับ MaxRequestsPerChild เป็น 0
หรือจะให้ค่ามันก็ได้ครับ แล้วแต่

ไม่ต้องไปปรับ max client จากค่าเดิมหรอกครับ ให้ปรับ MySQL ใช้แรมเยอะๆ จ่าย Query Buffer ได้เยอะ ใช้แรมกับ MySQL ดีกว่า
httpd เนี้ย…หนักที่ CPU Time Process ครับ ไม่ได้เน้นใช้แรมกันมากมายหรอก