ฉ้านนนโดน Hostmonster มัน De-Activated Account ด้วยข้อหา…
15-08-2008 19:13 เขียนโดย นาเดีย (อ่านแล้ว 1,446 คน)
“site causing performance problems” ให้รีบเก็บของภายใน 15 วัน ไม่งั้นจะโดนลบไฟล์ทิ้งทั้งหมด กรี๊ดด ต๊กใจมาก… เพิ่งโดนสดๆ ร้อน เมื่ออาทิตย์ที่แล้วเอง อีห่า งงมาก ตอนแรกก็แปลกใจโดนได้ไงย่ะ เราไม่ได้ทำพวก Blackhat หรือยัดสคริปต์ปั่นอะไรเทือกนั้นสักก็หน่อย ตายแล้ว นี่ฉันต้องย้ายเว็บอีกแล้วเหรอ แต่ไม่อยากย้ายมาที่ไทยเลย เพราะรู้สึกว่าที่นี่โอเคสุดแล้ว ราคาก็ถูก สิ่งที่ได้รับก็อลังการ อุตส่าห์ย้ายหนีจากเซิฟไทยมาอยู่ที่ HM แล้วพอตอนนี้มันจะถีบ เราต้องหนีกลับมาที่ไทยอีกหรือไง ช่วงแรกกลัวว่าจะโดนมันถีบมากเพราะเคยได้ยินมาแต่ว่าถ้าโดน Disable ด้วยข้อหาประเภทใช้ CPU เกินโควต้าหรือกินรีซอร์สเกินพิกัดจะโดนถีบเอาดื้อๆ ซึ่งส่วนใหญ่คนที่ทำสคริปต์ปั่นมักจะโดน แต่พอดีนึกออกว่าลองคุยกับเขาดูก่อนดีกว่า ก็รีบ LiveChat ไปเลย เราก็บอกว่าเราไม่ได้ยัดสคริปต์ปั่นนะค่ะคุณแค่ทำบล็อกโดยใช้ Wordpress ธรรมดาๆ นี่เอง

ปรากฎว่าได้เรื่อง เขาอธิบายดีมากเลย เขาบอกให้ไปดูในโฟลเดอร์ /tmp/cpu_exceeded_logs กับโฟลเดอร์ /tmp/mysql_slow_queries ดูซิว่าไฟล์ตัวไหนที่กินรีซอร์สเยอะหรือสคริปต์ตัวไหนที่มันดึงดาต้าเบสเยอะเกินพิกัด แล้วก็จัดการ Optimize ซะไม่งั้นโดนถีบ ก็เจอเลยค่ะ ตัว index.php ของ techible techkr และ nadiamode ก็แปลกใจทำไมบล็อก Wordpress ธรรมดามันถึงกินรีซอร์สมาก นอกจากนั้นไปเจอต้นตอหลักๆ อีก 1 ตัว มันเป็นเพราะตัวโปรแกรม OpenX (Ad Management System) ที่เราใช้อยู่ด้วย เพราะเจ้าตัวโปรแกรมนี้มันกินรีซอร์สมาก แล้วตอนแรกก็ดันเก็บไฟล์แบนเนอร์โฆษณาไว้ใน SQL ซะด้วย แล้วแต่ละไฟล์ก็ใหญ่ๆ ทั้งนั้นเลย แถมใส่ Ads เอาไว้ทุกเว็บทุกหน้า และก็เก็บสถิติ Adviews กับ Adclicks ด้วยทำให้ ทุกๆ ครั้งที่มีคนเปิดหน้าเว็บแล้ว Ads แสดงมันก็จะบันทึกข้อมูลลงดาต้าเบส แล้วลองคิดดูพอเว็บคนเข้าเยอะ วันนึงหลายพันคน เฉลี่ยนาทีละหลายคน ทำให้เซิฟเวอรมันต้องทำงานหนักตลอดเวลา ไหนจะเก็บสถิติ ไหนจะดึง Ads จากดาต้าเบส แล้วไฟล์แบนเนอร์แต่ละอันก็ไม่ใช่เล็กๆ เหมือของชาวบ้านเขา อันนี้ตั้งหลายร้อย k แล้วนอกจากนั้นก็ยังไปเจอปัญหาในจุดอื่นๆ อีก ก็เลยต้องจัดการ Optimize เว็บเป็นการใหญ่ ซึ่งพอจะแยกเป็นข้อๆ ได้ดังนี้
1. OpenX Ad Management System
ตัวนี้เป็นโปรแกรมที่เอามาไว้จัดการเรื่องโฆษณาเว็บในเครือทั้งหมด แต่หลังจากทดลองใช้มา 1-2 เดือน สรุปว่าอีห่านี่ตัวเดียวแดกรีซอร์สมากกว่าเว็บทั้งหมดรวมกันซะอีก วิธีแก้เลยต้องไปจัดการ
- ปิดไม่ให้มันบันทึกสถิติ Adviews ให้บันทึกเฉพาะ Adclicks คือพอมีคนคลิ๊กค่อยบันทึกไม่ใช่บันทึกตลอดเวลา โดยเฉพาะเทเบิ้ล ox_data_raw_ad_impression นี่แพรแวดมากที่สุด
- ย้ายไฟล์แบนเนอร์ทั้งหมดไปไว้ที่เซิฟเวอร์อื่นแทน มันจะไม่ดึงแรงเซิฟมาก
- ปรับเวลา Maintenance จากทุกๆ ชั่วโมง เป็นวันละ 1 ครั้งพอ
ตอนแรกมัน Runscript Mainteneace เองทุกๆ 1 ชั่วโมง เพื่อเก็บสถิติ ทำให้เซิฟล่มบ่อยมาก เลยต้องให้มันทำวันละครั้งพอ แล้วไฟล์แบนเนอร์ตอนแรกย้ายจาก SQL มาเก็บไว้แบบ Web Local ธรรมดาแล้วแต่ก็ยังไม่ไหว เพราะมันก็ยังดึก HTTP Request อยู่ดี เลยต้องย้ายไปที่เซิฟอื่นเลย สรุปคือไปฝากไว้ที่ PhotoBucket
2. ตัวบล็อก Wordpress เอง
อีช้างลาก ด้วยความที่เดี๊ยนเป็นคน สวย แรง เว่อร์จัด ก็เลยยัดอะไรต่อมิอะไรลงไปในเว็บจนเกินพิกัด เช่น แบนเนอร์ใหญ่เกิน รูปเยอะเกิน ไฟล์ใหญ่เกิน และปลั๊กอินบางตัวก็สรวล เลยต้องไป Optimize กันยกใหญ่
- จัดการปรับให้หน้ารวมแสดงแค่ 5 บทความ (จากเดิม 10 บทความ)
- ลบสคริปต์ที่ไม่ได้ใช้ในไฟล์ให้หมด
- ลงปลั๊กอินป้องกันสแปมที่ป้องกันได้ 100%
- เขียนคำสั่งที่ .htaccess ให้มันเก็บ cache พวกไฟล์รูปและไฟล์มีเดียต่างๆ
ตอนแรกที่เราเจอ “This Account Has Exceeded Its CPU Quota” ก็นึกว่าเป็นเพราะโปรแกรม Ads อย่างเดียว แต่พอได้ไปดู Log Files ถึงจะรู้ว่ามันพวกขยะเล็กๆ น้อยๆ ที่มันแทรกตัวอยู่ในสคริปต์โดยที่เราอาจไม่รู้ตัว แต่มันก็เป็นสาเหตุนึงที่ทำให้เซิฟเวอร์ทำงานหนักโดยไม่มีความจำเป็นได้ เช่น บางปลั๊กอินที่เรา Uninstall ไปแล้วแต่ลืมเอาสคริปต์ที่ใส่ไว้ในไฟล์เทมเพลตออก หรือคำสั่งบางอย่างที่ไม่จำเป็น และที่สำคัญคือถ้าบล็อกเราเล็กๆ คนเข้าวันนึงไม่ถึงพันคนก็ไม่เป็นไร เพราะเฉลี่ยแล้วสัก 2 นาทีถึงจะมีคนเข้าบล็อก 1 คน แต่ถ้าบล็อกเราคนเข้าวันละ 3,000-5,000 คนขึ้นไป เฉลี่ยแล้วแต่ละนาทีจะมีคนเข้าใช้งานพร้อมกันถึง 3-4 คน แล้วลองคิดดู ถ้าบล็อกหน้าแรกมี 10 บทความ ในแต่ละบทความมี 1 รูป ขนาดไฟล์ประมาณ 50-80kb 10 รูปก็ 500-800kb โฆษณาสัก 5-6 ตำแหน่ง ขนาดไฟล์รวมกัน 800-900kb อะไรจะเกิดขึ้น สรุปหน้านึงต้องโหลดเฉพาะรูปเกือบ 2MB แล้วต้อง Query เรียก Database อีก 10 บทความ แล้วรูปในบทความของเราก็จะมีขนาดไฟล์ใหญ่กว่าชาวบ้านมาก เพราะใช้ปลั๊กอินที่จะคอยใส่ Watermark ลงไปในรูปทุกรูปที่อัพโหลด แม้เราจะ Save for web มาแล้วจาก Photoshop แต่พอมันอัพขึ้นไปมันจะต้องไปใส่ Watermark แ้ล้วก็สร้างไฟล์รูปใหม่ขึ้นมา ทำให้ขนาดไฟล์จะใหญ่ขึ้นเกือบ 30-50% พอทุกอย่างมาเจอกันก็เลยระเบิด ความจริงถ้าเฉพาะตัว Wordpress มันก็ไม่มีปัญหาหรอกถ้าเราจะให้แสดง 10 บทความ แต่เผอิญมาเจอกับโปรแกรม Ads เข้าไปด้วย แบนเนอร์ด้วย รูปในบทความด้วย คนเข้าเยอะขึ้นด้วย สแปมด้วย โดยเฉพาะสแปมนี่ก็ตัวดีเหมือนกัน
เลยต้องไปหาโปรแกรมป้องกันสแปมมาใช้ เพราะว่าถ้าใช้ Akismet เนี่ยมันเอาไม่อยู่หรือถ้ามันกันสแปมได้ก็จริงแต่สแปมก็ทะลวงเข้ามาในเว็บได้แล้ว จะพูดยังไงดีหล่ะ Akismet เนี่ยมันกันสแปมได้โดยไม่ให้สแปมโชว์ในบล็อกเราทั้งพวกสแปมคอมเม้นต์หรือ สแปม Trackback แต่สแปมพวกนี้มันบันทึกข้อมูลลงดาต้าเบสเราหมดแล้ว แล้วถ้าเป็นบล็อกเล็กๆ คนเข้าน้อยอันนี้ไม่มีปัญหา แต่ถ้าเป็นบล็อกที่คนเข้าเยอะสแปมมันก็เยอะตาม วันๆ นึงสแปมเข้าเป็นพันเป็นหมื่น เลยทำให้เซิฟล่มเป็นช่วงๆ กิน CPU บ้าง กิน Resources บ้าง ลองคิดดูนะสมมุติวันนึงมีสแปมขั้นต่ำสัก 4,000-5,000 ตัว คิดแล้วในแต่ละนาทีมันสแปมมากถึง 2-3 ครั้ง เหมือนมีคนมาคอมเม้นต์บล็อกเราทุกๆ นาทีอ่ะ แต่ต่างกันตรงที่พวกนี้มันเป็นสแปม แล้วข้อความที่มันโพสก็ยาวเหยียด มีแต่ลิงค์เว็บโป๊ เว็บแตด โฆษณาอะไรของพวกมัน แล้วเซิฟจะไม่ล่มได้ยังไง เซิฟส่วนใหญ่เขาก็ให้ใช้ CPU Time ได้ประมาณ 30 วินาทีต่อ 1 ครั้งเท่านั้นแหละ แล้วก็กำหนดว่าห้ามเกินกี่ครั้งในช่วงเวลา 1-2 นาที แล้วข้อความสแปมยาวๆ มันก็เลยรันสคริปต์ยาวนานผิดปกติจนเซิฟเวอร์มันล็อคตัวเอง แต่ก็มาได้เจ้าปลั๊กอิน WP-Spamfree ช่วย เจ้านี่ใช้ดีมาก เพราะมันกันสแปมตั้งแต่หน้าประตูบ้านเลยทำให้มันมาแย่งรีซอร์สใช้งานไม่ได้ เหมือนพอจะมีสแปมมาคอมเม้นต์มันก็จะโดนถีบไปเลย แต่ถ้าเป็นมนุษย์ถึงจะยอมให้คอมเม้นต์ได้ ต่างจากอี Akismet อีนั่นมันเชิญสแปมเข้ามาในบ้านก่อนถึงค่อยคัดแยกตัวอีกที
3. ลบ pligg_pageviews ใน Techkr
ต้องไปจัดการแก้สคริปต์ใน pligg ซึ่งเป็นซอฟท์แวร์ของ Techkr ที่มันจะมีจะมีฟังก์ชั่นเก็บ Page Views หรือจำนวนคนดูในแต่ละหน้า มันจะทำงานคล้ายๆ กับ Adviews ใน Openx อีห่านี่ก็พอกัน ขนาดปิดการทำงานใน Control Panel แล้วแต่ดูในดาต้าเบสมันก็ยังเก็บข้อมูลเรื่อยๆ เลยต้องไปลบคำสั่งออกจากในไฟล์โดยตรงเลย อีนี่มันไม่มีปัญหาจนกระทั่งเว็บ Techkr คนเข้าเยอะขึ้น มันเลยหน่วง เพราะทุกครั้งที่คนเข้าเว็บมันก็จะยิง Query ลงดาต้าเบสแล้ว
4. ปิด Shoutbox ในบอร์ดที่ใช้ Discuz ไม่ให้คนทั่วไปเห็น
อีหอยนี่ก็ตัวดีเหมือนกัน เป็นสคริปต์ที่กิน CPU และ Resources เยอะที่สุดตัวนึงก็ว่าได้ แต่ค่าปกติเขาเซ็ตให้เฉพาะสมาชิกบอร์ดเห็นมันเลยไม่ค่อยมีปัญหา แต่เราไปเซ็ตให้ Guest เห็นด้วย เลยทำให้ทุกครั้งที่มีคนเข้าบอร์ดมันจะต้อง Run Query ดึงข้อความจาก Database มาแสดง แล้วตัวสคริปต์มันก็รีเฟรซเองด้วย ถ้ามีใครเปิดหน้าแรกเว็บบอร์ดพร้อมๆ กันเยอะๆ ก็เดี้ยงเลย
5. ลบสคริปต์ที่ไม่ได้ใช้แล้ว
ปกติเดี๊ยนจะเป็นอีหนูชอบลอง คือเจอสคริปต์ โปรแกรมที่ไหนเปรี๊ยวๆ ก็เอามาลองหมด บางทีลงแล้วลืมลบทิ้ง มันก็ค้างอยู่ในเซิฟเวอร์ แล้วก็รับประแดกรีซอร์สไปโดยที่เราไม่รู้ตัว
6. ลงมนต์ดำ .htaccess
เทคนิคนี้จำเป็นมากสำหรับการ Optimizing Web คือเราต้องให้เซิฟเวอร์มันสั่งให้บราวเซอร์เก็บ cache ไฟล์ที่ไม่จำเป็นต้องโหลดทุกครั้งเอาไว้ ไม่ยังงั้นทุกครั้งที่คนเข้าเว็บเราเขาก็ต้องโหลดใหม่หมดเลยตั้งแต่ไฟล์รูป ไฟล์ php html ไฟล์ css และอีกสารพัด อันนี้ไม่ได้พูดถึงกรณีว่าคนเข้าเว็บจะเข้าช้าหรือเร็ว คือเดี๋ยวนี้เขาก็ใช้เน็ตเร็วๆ กันแล้วทั้งนั้นจะโหลดเยอะแค่ไหนก็แป๊บเดียว เพียงแต่จะพูดถึงว่า ยิ่งเขาต้องโหลดเยอะ มันก็ยิ่งกินรีซอร์สจากเซิฟเวอร์เยอะขึ้น ทำให้เซิฟเวอร์ทำงานหนักขึ้นโดยไม่จำเป็น โดยเฉพาะพวกไฟล์มีเดียหรือไฟล์รูปภาพที่เราไม่ได้อัพเดทบ่อยๆ อยู่แล้ว ไฟล์พวกนี้ไม่จำเป็นต้องโหลดใหม่ทุกครั้งที่เข้าเว็บ แต่ไฟล์ php หรือ html อันนนี้ไม่ต้องเก็บ cache เท่านี้ก็จะช่วยได้มากทำให้เว็บที่มีรูปเยอะๆ เทมเพลตหนักๆ CSS หน่วงๆ อย่างเว็บเราเบาแรงไปได้เยอะเลยค่ะ
## สำหรับเก็บ cache ไฟล์ที่ไม่จำเป็นต้องโหลดบ่อย ## http://blog.nadiamode.com/501/hostmonster-deactivated-my-account # 1 YEAR <FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$"> Header set Cache-Control "max-age=29030400, public" </FilesMatch> # 1 MONTH อันนี้ตัวดี พวกไฟล์รูปเนี่ยเก็บ cache ไว้เลย <FilesMatch "\.(jpg|jpeg|png|gif|swf)$"> Header set Cache-Control "max-age=2419200, public" </FilesMatch> # 3 HOUR <FilesMatch "\.(txt|xml|js|css)$"> Header set Cache-Control "max-age=10800" </FilesMatch> # NEVER CACHE สั่งให้มันไม่ต้องเก็บ cache พวก dynamic file <FilesMatch "\.(html|htm|php|cgi|pl)$"> Header set Cache-Control "max-age=0, private, no-store, no-cache, must-revalidate" </FilesMatch>
7. Optimize จิปาถะ
คือต้อง Optimize Web อย่างสม่ำเสมอ โดยเฉพาะคนที่ชอบลงสคริปต์ไว้เยอะแบบเราเนี่ย มีหลายเว็บ หลายซับโดเมนก็ต้องดูให้ละเอียด ใครที่ทำเว็บเดียวอาจจะไม่ต้องเหนื่อยขนาดนี้ ต้องคอยดูบางทีลงปลั๊กอินเพิ่ม หรือใส่อะไรเพิ่มนี่ต้องไปเช็คดูใน log แล้วว่าสคริปต์มันทำงานผิดปกติหรือเปล่า ถ้าผิดปกติจะได้รีบเอาออกทันก่อนที่จะโดนถีบ
สรุป
ที่สำคัญอันดับแรกคือต้องไปเปิดดู log files ของตัวเองในโฟลเดอร์ /tmp แล้วไล่ดูแต่ละตัวเลยว่าเว็บเรามีจุดอ่อนตรงไหน สคริปต์ตัวไหนมีปัญหา แล้วก็ไล่แก้มาทีละจุด และในที่สุดเดี๊ยนก็กลายเป็นผู้เชียวชาญด้านงานแอดมินไปอีกหนึ่งสเต็ปจากที่ไม่ค่อยจะรู้เรื่องพวกนี้สักเท่าไหร่ เพราะรู้สึกว่าปวดหัว อะไรก็ไม่รู้แค่ทำเว็บอย่างเดียวก็พอ แต่พอเจอดีกับตัวเองเลยต้องศึกษาเป็นการใหญ่ และตอนแรกที่โดนก็ได้ลองติดต่อไปที่ Live Chat และได้สอบถามว่าที่ Hostmonster มี Special Plan สำหรับลูกกค้าที่ใช้ Resources เยอะมั๊ยนอกจาก Plan ธรรมดาเดือนละ 6-7 เหรียญฯ เนี่ย เขาก็บอกว่ามี เรียกว่า “high cpu server” เดือนละ 19.95 เหรียญฯ ถ้าอยากได้ต้องติดต่อ Live Chat หรือส่ง Ticket เอา โดยจะได้ใช้ CPU 75% และ CPU Time 90 วินาที จากปกติเราจะได้ใช้ CPU แค่ 25% และ CPU Time 30 วินาที เหมาะสำหรับเว็บที่รันสคริปต์หนักๆ หรือไม่ก็มีคนเข้าใช้งานเยอะๆ พร้อมกัน แต่เขาก็บอกว่าโดยปกติเซิฟเวอร์ของ HM รองรับเว็บทั่วไปกว่า 85% ได้อยู่แล้ว เพียงแต่เจ้าของเว็บก็ต้อง Optimize เว็บตัวเองด้วย ไม่ใช่ยัดอะไรได้ก็ยัดไม่ดูเลย เพราะนี่มัน Shared host ไม่ใช่ Dedicated ตอนนั้นก็ติดต่อไปนะเรื่องโปรแกรมพิเศษเนี่ยแล้วเขาบอกว่าจะติดต่อกลับมาแต่เงียบไปเลย สงสัยเขาเห็น Account นี้ไม่ใช้รีซอร์สเกินแล้วมั๊ง ถึงจะอัพเกรดไปก็เปลืองตังค์ปล่าวๆ เพราะใช้ไม่เกินโควต้าแล้วก็เลยไม่ติดต่อมา อันนี้คิดไปเองนะ แต่ถึง HM จะติดต่อมาก็จะ Cancel แล้วหล่ะ จะได้ไม่ต้องจ่ายเพิ่ม เพราะตอนนี้ไปเช็คดูใน log files ปรากฎว่าตั้งแต่วันแรกที่เริ่ม Optimize และปิดบางฟังค์ชั่นของ OpenX ทุกอย่างก็ปกติ ไม่มีการแจ้งเตือนอีกเลย ยกเว้นยังมีบางสคริปต์ทีรัน Query ช้าบ้าง อันนี้ก็ค่อยทยอยแก้ไปเรื่อยๆ ตั้งแต่วันที่โดนวันนั้นถึงวันนี้รู้สึกตัวเองฉลาดขึ้นเยอะมาก รู้จักคำว่า Optimize และทำเว็บอย่างฉลาดมากขึ้น พยามปรับให้มันสวยงาม อลังการ ไปพร้อมๆ กันรีซอร์สน้อยที่สุด จากที่เมื่อก่อนเน้นสวยอลังการอย่างเดียวโดยไม่ Optimize ตอนนี้ก็รู้แล้วว่าเว็บที่ Optimize ไม่จำเป็นต้องขี้เหล่หรือฟังค์ชั่นการใช้งานน้อยเสมอไป หรือเว็บสวยๆ อลังการเต็มไปด้วยฟีเจอร์การใช้งานก็ไม่จำเป็นต้องกินรีซอร์สมหาศาลเสมอไป เพราะเราสามารถปรับให้มันลงตัวได้พอดีระหว่างฟีเจอร์การใช้งานและการใช้ Resource

$50 Google Adwords Voucher คูปองเงินสด 1,600 บาท
Invite บิทแลกเทมเพลต Pligga มูลค่า 545 บาทฟรีคะ
จะเลือกใครดีระหว่าง “3BB 10Mb” กับ “True 10Mb และ 12Mb”
“3BB 10Mb” ราคา “1,490 บาท” ใหญ่แค่ไหนก็โหลดได้หมด แรง…ชัวร์ ที่นี่ที่เดียว โทร 1103
ได้ทีขี้ช้างไล่ “3BB” เปิดตัว “24Mb” พร้อม “พอลล่า” เป็นพรีเซ็นเตอร์คนใหม่
บ้าเกาหลี… ทำไมมีแฟนไม่ได้… ด่าคนชาติเดียวกัน…
เปิดรับผู้สนับสนุนเว็บ Techkr.com 12,000+UIP/วัน
เตรียมพบ Pligg 1.0 Final อีกไม่เกิน 1 สัปดาห์พร้อมภาษาไทยเต็มรูปแบบ
เว็บ Pligg ในไทย
ซูซาน บอยล์ได้รับเชิญไปร้องเพลงต่อหน้าประธานาธิบดีโอบามาในวันประกาศอิสระภาพ 4 ก.ค.




06-03-2009 2:28
โอ้โฮ ขอบคุณครับ สำหรับบทความดีๆ เขียนเยอะๆนะครับจะเข้ามาอ่านบ่อยๆ ผมมือใหม่ครับยังต้องเรียนรู้อีกมาก
07-09-2009 11:12 http://thaisquash.ning.com
อยากปรึกษา เรื่อง pligg อ่ะครับ ขอบคุณล่วงหน้าครับ