ขอร้องเถอะครับ ผู้ใช้งานโฮสทุกท่าน เข้ามาอ่านด้วย แล้วชีวิตท่านๆจะสบายขึ้น โฮสหายช้าหายมีปัญหา ถ้าคุณอ่านและปฏิบัติตามนี้ได้ซักครึ่งหนึ่งก็ยังดีครับกระทู้นี้ก็ไม่มีอะไรหรอก แค่อยาก "ระบาย" ฮาาาา และคิดว่าคนที่ให้บริการโฮสหลายๆคนก็น่าจะเจอแบบผมมาเกือบหมดหละครับ เอาเป็นว่า มาอ่านกันดู สาเหตุหลายๆอย่างที่ทางผู้ใช้งานโฮสทุกคนไม่เข้าใจ ว่าทำไม โฮสถึงช้า ?
ผมก็บอกได้ว่า อยุ่ดีๆโฮสมันไม่มีปัญหาหรอกครับ ถ้าเว็ปไซต์ลูกค้าทุกท่าน เนียนกริ๊บกันทุกคน (แต่ในทางความจริงก็เป็นไปไม่ได้) เอาเป็นว่า แก้ที่สคิปไม่ได้ ก็เอาเรื่องที่มันมีปัญหาพอกันมาแล้วกัน
เอาล่ะ ปัญหาที่ผมเจอบ่อยสุดจาก script/user ก็ไล่ตามนี้ละกัน
1. เรื่องของการ Backup เอาตรงๆก็ อย่ากด Backup ในช่วงเวลาที่คนเข้าเยอะ (ของไทยเราก็ .. ตั้งแต่ 5 โมงเย็นเป็นต้นไป) อันนี้ย้ำเลย โคตรปวดหัวทำผมค้างไปหลายรอบ จนต้องจำกัดเวลา Backup ให้ คือเวลาท่านๆกด Backup กันทีนึงเนี่ย ยิ่งถ้าข้อมูลเยอะๆนะ อื้อหือบอกตรงๆว่ามันทำให้ server โหลดขึ้นมหาศาลกันเลยทีเดียว แล้วถ้าท่านกดตอนคนเข้าเยอะๆกันละ เช่นตั้งแต่ 6 โมงเย็นเป็นต้นไป ไม่ต้องสืบ อืดแดรกทั้งเครื่องแน่นอน อ้อ แล้วก็อีกอย่างนะครับ ถามเวลา backup ประจำวันของเจ้าของโฮสดูบ้างครับ ว่าเขา backup ช่วงเวลาไหน แล้วก็อย่าไปกดซ้ำเวลานั้น (ผมเจอประจำ ไอ้กด Backup ซ้อนกับ Backup ประจำวัน เครื่องแทบค้าง)
2. Plugins อันนี้คือ Plugins อย่าเยอะเกินไป อันนี้สำคัญ คือ Plugins เนี่ย ใช้นิดเดียวก็พอครับ ใช้เยอะมีแต่จะเพิ่มการซดทรัพยากรเซิฟเวอร์โตครๆ โดยเฉพาะ Wordpress และ Joomla โปรดเถอะครับเห็นใจกันนิดใช้กัน 4-5 ตัวก็พอแล้ว ผมเคยเจอหนึ่งเคสยัดไปเถอะ 50-60 ตัวในเว็ปเดียว cpu มีเท่าไหร่ก็เอาไปใช้หมดนั่นหละครับจากที่ต้องใช้เครื่องเครื่องละสองพันรันเว็ป กลายเป็นสองหมื่นยังจะไม่ไหว แบบนี้ก็ค้างกันทั้งเครื่องเช่นเดียวกัน
3. รูปและไฟล์ ใช่ครับ รูปและไฟล์ ผมเจอมาเยอะครับคนที่เก็บรูปไว้บนโฮสตัวเองทั้งหมด (คิดดูนะครับ ขนาดทั้งหมด 8GB รูปซัก 5GB ละครับ) อันนี้ก็สำคัญ เก็บน่ะเก็บได้ครับ แต่ลองคิดดูซิ ถ้าคุณเก็บภาพไว้บนโฮสเยอะๆ นอกจากจะหนักรูปแล้ว เวลา backup กันทีนึงเนี่ย นานโคตร และกินทรัพยากรโคตรๆ เวลาย้ายก็มีปัญหาอีก เอาจริงๆ ใช้ของฟรีดีๆอย่าง upic.me เถอะครับ เพื่อที่จะไม่เป็นภาระแก่เพื่อนร่วมโฮส และจะได้สร้างภาระให้แก่พี่ไอซ์เยอะๆ 5555+ อันนี้ผมแนะนำ
4. CMS ท่านทั้งหลาย อย่าลง cms ต่างๆที่มัน comment ได้แบบทิ้งๆขว้างๆเถอะครับ มันโดนกันทุก cms หละครับ แต่ที่หนักสุดคือ smf เพราะว่านิยมกันสุดๆ แพร่หลายสุดๆ และ seo แรงสุดๆเช่นเดียวกัน ถ้าคุณลงทิ้งไว้ คุณจะสร้างภาระให้แก้ผู้ร่วมใช้งานโฮสเดียวกันอีกร้อยคนทันที (ทั้งเรื่อง bw inter และเรื่องของ database ที่โดน spam ถล่มอย่างหนักมหาศาล)
5. Scripts Performance อันนี้ฝากถึง Programmer ฮะ ผมเจอมาเยอะ ขอร้องเถอะอย่าขี้เกียจ หรือว่าเขียนสคิปมาขายนั้น เน้น performance ให้กับคนใช้หน่อย อย่าเขียนมาเพื่อขายแบบขอไปที เพราะอีคนลำบากน่ะ...เจ้าของโฮสที่ท่านด่าๆกันเวลาล่ม ขอยกตัวอย่าง
- เวลาเปิด connection แล้วช่วยกรุณา ปิด connection ให้ด้วย อย่าเปิดค้างเลยครับ สงสารเครื่องเถอะ กับอิแค่คำสั่ง mysql_close(); เองครับ
- อย่าสร้าง error ของตัวเองขึ้นมา ถ้าจะให้มันโชว์ error ก็กรุณาใช้ mysql_error(); เถอะครับ อย่าไปสร้างเอง ผมเคยเจอแบบนี้
or die("ERROR $insert บรรทัดที่ 44");
แม่จ้าว จากใจเลยครับทำเพื่ออะไร อยากรู้คนเดียวใช่ไหมว่ามันคืออะไร แทนที่จะ error โชว์ query ออกมา เห็นแล้วก็รู้ปัญหา อินี่โชว์ error มาแบบว่า "error บรรทัดที่ 44" อันนี้สุดบรรยาย
- อย่า join table แบบบ้าคลั่งโดยที่ไม่ทำ INDEX ขอยกตัวอย่าง
SELECT classified_post_img.picshow, classified_type.type, classified_post.id, classified_post.type, classified_post.post_title, classified_post.post_s_detail, classified_post_contact.province_id, province.PROVINCE_NAME, classified_post.cate_id, category.cate_name, classified_post.sub_cate_id, sub_category.sub_cate_name, classified_post.post_date, classified_post.post_price_type, classified_post.post_price, classified_post.post_view
FROM `classified_post`
INNER JOIN classified_post_img
ON classified_post.id=classified_post_img.post_id
INNER JOIN classified_type
ON classified_post.post_type=classified_type.id
INNER JOIN classified_post_contact
ON classified_post.id=classified_post_contact.post_id
INNER JOIN province
ON classified_post_contact.province_id=province.PROVINCE_ID
INNER JOIN category
ON classified_post.cate_id=category.id INNER JOIN sub_category
ON classified_post.sub_cate_id=sub_category.id
WHERE classified_post.member_id='41'
ORDER BY classified_post.post_update DESC LIMIT 0,5;
ผมจะแยกออกเป็นทั้งหมด 3 อย่างครับ อย่างแรก SELECT อันนี้ไม่มีปัญหา ผมข้ามไปละกัน
อันที่มีปัญหาหนัก คือหลัง FROM ครับ เพราะว่ามี JOIN กันอยู่ และถ้ามีการ JOIN TABLE ท่านจะต้องทำ index บน field ที่ท่านใช้เป็น condition เช่น
FROM `classified_post`
INNER JOIN classified_post_img
ON
classified_post.id =
classified_post_img.post_id จาก query นี้ ท่านจะต้องทำ INDEX บน field classified_post.id และ classified_post_img.post_id
สำหรับ JOIN ไปยัง table อื่น ก็ทำเหมือนกัน ไปสร้าง index ให้ครบเถอะครับ ปวดจิต
ส่วนที่สองที่จะต้องทำ INDEX คือ คุณจะต้องทำ INDEX บน field หลัง WHERE Clause เช่น จาก QUERY ข้างบน
WHERE classified_post.member_id ='41'
คุณจะต้องทำ INDEX ที่ classified_post.member_id ด้วยครับ
และสุดท้าย ไม่ว่าคุณจะ ORDER BY ด้วยอะไร ก็จะต้องไปทำ INDEX ที่นั่นด้วยนะครับ เช่นจากข้างบน
ORDER BY classified_post.post_update
คุณก็จะต้องทำ INDEX ที่
classified_post.post_update ด้วย
สำหรับวิธีการทำ INDEX ไม่ยากอย่างที่คิดครับ Login เข้า phpMyAdmin ไปโลด และไปยัง table ที่ต้องการทำ index กดไปที่ structure แล้วก็ .. ตามภาพ

ป.ล. ใครมีอะไรจะเสริม จะแย้ง ก็เสริม/แย้งมาเลยครับ แชร์ความรู้กันไป