ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comอื่นๆCafeช่วยด้วย mysql_connect() [function.mysql-connect]: Too many connections
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ช่วยด้วย mysql_connect() [function.mysql-connect]: Too many connections  (อ่าน 5121 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
BosnoS
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 222
ออฟไลน์ ออฟไลน์

กระทู้: 8,168



ดูรายละเอียด
« เมื่อ: 23 มิถุนายน 2008, 00:00:19 »

mysql_connect() [function.mysql-connect]: Too many connections 

ปัญหาเดิมๆ ของผม ไม่ว่าทำเว็บเล็ก เว็บใหญ่ host ไทย host นอก

มีปัญหานี้มากวนใจตลอดเวลาเลย

ผมเช็คดูแล้ว ทุกครั้งที่ ติดต่อ sql เมื่อเสร็จผมจะ ปิด mysql_close(); ตลอดเวลา

เคยเป็นสมัย Jeedza แต่ก็แก้ไขได้หมดแล้ว

คราวนี้ทำเว้บใหม่ host นอก เพิ่งทำเสร็จ คนเข้า แทบไม่มี ดัง เจอปัญหานี้ได้

มีวิธีการแก้ไขอย่างไร

เหมือนกับเขา limited จำนวนคน connect ไว้ เราจะเข้าไปดูได้ไหม และ ดูตรงไหน ว่าเขา limited ไว้กี่คน

มีวิธีเขียน code เพื่อให้มันแก้ไขปัญหานี้ได้ไหม

ช่วยหน่อยนะครับ เครียดอีกแล้ว
บันทึกการเข้า
lao
ก๊วนเสียว
*

พลังน้ำใจ: 7
ออฟไลน์ ออฟไลน์

กระทู้: 495



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 23 มิถุนายน 2008, 00:15:12 »

ถ้าใช้ phpMyAdmin ได้ ให้เข้าไปดูที่ Show MySQL system variables ครับ
ถ้าเข้าไม่ได้ก็เขียนโปรแกรม ให้ show variables เอาครับ แล้วดูที่ max_connections
บางที่ถ้าเรา connect แล้วค้างไว้ไปทำอย่างอื่นนาน ค่อยไป close ก็จะทำให้ connection เต็มได้ครับ
ทางที่ดี เปิดแล้วรีบเก็บใส่ array บน memory ก่อนดีกว่าครับ อย่าไปค้างไว้นาน ..  Smiley
บันทึกการเข้า

มอมแมม
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 38
ออฟไลน์ ออฟไลน์

กระทู้: 1,035



ดูรายละเอียด
« ตอบ #2 เมื่อ: 23 มิถุนายน 2008, 00:20:59 »

ใช่แล้วครับวิธีแก้ปัญหาที่ดีที่สุดของ MySQL Too Many Connection คือการทำระบบ cache

อย่างที่ง่ายที่สุดคือคือการ Cache ทั้ง Page เป็นการ cache output ทั้งหมดให้ออกมาในรูปแบบ Static ซึ่ง Library ที่สนับสนุนการทำ Cache ประเภทนี้คือ smarty ถ้าไม่งั้นคงต้องเขียนเอง โดยใช้ คำสั่งในตระกูล ob โดยเฉพาะ ob_get_content หรือรวบคำสั่งเดียวด้วย ob_get_clean

ส่วนวิธีที่ผมชอบที่สุดคือการทำ cache query โดยการ cache ในระดับนี้สามารถทำได้ตั้งแต่

1. File Cache
อันนี้เป็นการ cache query results ลง text file ทำง่ายสุด แต่ผลลัพธ์ก็ไม่เลวร้ายนัก

2. Fast Memory on local (apc)
อันนี้เป็นการ cache ลง fast memory (ram) ภายในเครื่องตัวเอง เร็วสุดๆ แต่มีข้อจำกัดคือ ขนาดแรมที่ไม่สามารถเพิ่มได้มากนัก (ตาม spec mainboard)

3. Fast Memory on networks (memcache)
อันนี้เป็นการทำ cache ลง fast memory เช่นกัน เพียงแต่สามารถ connect ไปยัง server ตัวอื่นๆ ที่ต้องการได้เลย ดังนั้นจึงไม่ต้องห่วงเรื่อง แรมจำกัด facebook เองใช้วิธีนี้ โดยแทบจะไม่มีการ แตะ db เลย db เอาไว้ backup เท่านั้น (เผื่อไฟดับ) ความเร็วเป็นรอง local นิดหน่อย แต่ระยะยาวสุดยอดครับ แต่ทุนต้องหนาหน่อย

ตัวอย่าง library ที่ใช้ทำ cache ทั้ง 3 ประเภท
http://www.rooftopsolutions.nl/article/107

วิธีสุดท้ายเป็นวิธีการที่ไม่อยากแนะนำเท่าไหร่ คือซื้อ server มารัน mysql อีกตัวเลย แล้ว connect ข้ามเครื่อง (สุดท้ายก็ต้องซื้อเพิ่มไปเรื่อยๆ -*-)
-----------------------------------------
comment ส่วนตัว

ผมว่าวิธีที่น่าจะเป็นทางเลือกที่ดีที่สุดของคุณคือการทำ index ให้ db ดีๆหน่อย รวมทั้งการทำ cache ในระดับ file รวมทั้งคำนึงปัญหาเรื่องการ seek cache ผ่าน folder ด้วยก็น่าจะเพียงพอแล้วล่ะครับ

Tee++;
บันทึกการเข้า
BosnoS
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 222
ออฟไลน์ ออฟไลน์

กระทู้: 8,168



ดูรายละเอียด
« ตอบ #3 เมื่อ: 23 มิถุนายน 2008, 00:23:21 »

cache เคยศึกษานิดหน่อยคัรบ แต่ งง ไม่รู้เรื่องเลย ล่าสุดก็เมล์ไปหา host ล่ะ

ผมมั่นใจนะ ว่าเว็บผมเพิ่งเสร็จ คนเข้าพร้อมกัน เกิน 10 คนก็เวอร์ล่ะ แล้วมันล่มได้ไงเนี้ย  Tongue
บันทึกการเข้า
BosnoS
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 222
ออฟไลน์ ออฟไลน์

กระทู้: 8,168



ดูรายละเอียด
« ตอบ #4 เมื่อ: 23 มิถุนายน 2008, 00:25:36 »

max connect errors 10
max connections 100


นี้อ่ะครับ

ถามหน่อยซิครับ

สมมุติ 1 หน้า

ผม Connect แล้วก็ mysql_close();

ประมาณ 3 ครั้ง

จะนับเป็น 3 เลยหรอครับ
บันทึกการเข้า
BosnoS
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 222
ออฟไลน์ ออฟไลน์

กระทู้: 8,168



ดูรายละเอียด
« ตอบ #5 เมื่อ: 23 มิถุนายน 2008, 00:32:29 »

เจอล่ะ ส่วนที่ทำงานหนักสุด ผมลืมใส่ mysql_close();

น่าจะมีส่วน
บันทึกการเข้า
lao
ก๊วนเสียว
*

พลังน้ำใจ: 7
ออฟไลน์ ออฟไลน์

กระทู้: 495



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 23 มิถุนายน 2008, 00:45:59 »

อันนี้ connect บน localhost ใช่มะครับ ถ้าเป็น share host แล้วเปิด
max_connections ไว้แค่ 100 ก็ถือว่าน้อยไปครับ เพราะว่ามันเป็น
connection ของส่วนรวมนะครับ บางเว็บอาจจะเขียนโปรแกรมไม่ดีก็ได้
ก็พาส่วนรวมเสียหายไปด้วยครับ fine tuning MySQL แล้วหรือยังครับ ..
เรื่องพวกนี้ เป็นเรื่องละเอียดอ่อนครับ ถ้าเจ้าของ host เค้ามีความรู้ ก็ดีไป
ถ้าใช้อะไรที่มันเป็นค่าปกติหมด ก็แย่ไปครับ  Lips Sealed
บันทึกการเข้า

BosnoS
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 222
ออฟไลน์ ออฟไลน์

กระทู้: 8,168



ดูรายละเอียด
« ตอบ #7 เมื่อ: 23 มิถุนายน 2008, 01:35:06 »

อันนี้ connect บน localhost ใช่มะครับ ถ้าเป็น share host แล้วเปิด
max_connections ไว้แค่ 100 ก็ถือว่าน้อยไปครับ เพราะว่ามันเป็น
connection ของส่วนรวมนะครับ บางเว็บอาจจะเขียนโปรแกรมไม่ดีก็ได้
ก็พาส่วนรวมเสียหายไปด้วยครับ fine tuning MySQL แล้วหรือยังครับ ..
เรื่องพวกนี้ เป็นเรื่องละเอียดอ่อนครับ ถ้าเจ้าของ host เค้ามีความรู้ ก็ดีไป
ถ้าใช้อะไรที่มันเป็นค่าปกติหมด ก็แย่ไปครับ  Lips Sealed

ค่าที่ให้ดู ผมดูจาก phpmyadmin นะครับ พอคนเข้าเยอะๆ ล่มตลอดเลย
บันทึกการเข้า
lao
ก๊วนเสียว
*

พลังน้ำใจ: 7
ออฟไลน์ ออฟไลน์

กระทู้: 495



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 23 มิถุนายน 2008, 01:44:57 »

อันนี้ connect บน localhost ใช่มะครับ ถ้าเป็น share host แล้วเปิด
max_connections ไว้แค่ 100 ก็ถือว่าน้อยไปครับ เพราะว่ามันเป็น
connection ของส่วนรวมนะครับ บางเว็บอาจจะเขียนโปรแกรมไม่ดีก็ได้
ก็พาส่วนรวมเสียหายไปด้วยครับ fine tuning MySQL แล้วหรือยังครับ ..
เรื่องพวกนี้ เป็นเรื่องละเอียดอ่อนครับ ถ้าเจ้าของ host เค้ามีความรู้ ก็ดีไป
ถ้าใช้อะไรที่มันเป็นค่าปกติหมด ก็แย่ไปครับ  Lips Sealed

ค่าที่ให้ดู ผมดูจาก phpmyadmin นะครับ พอคนเข้าเยอะๆ ล่มตลอดเลย

ครับ max_connections เปิดไว้ 100 มันเต็มแน่ ๆ ครับ ถ้าเป็นพวก hosting
แต่ละคนเขียนโปรแกรมหนักเบาต่า่งกันครับ ผมว่าสมัยนี้ memory ของ server
น่าจะไม่น้อยเท่าไรนะครับ อย่างต่ำน่าจะ 2GB ขึ้นไป ลอง tuning MySQL ดูครับ ..
ต่อให้เครื่องแรงมากมายยังไง ถ้าไม่มีการ tuning มันก็ทำงานไม่ได้เต็มประสิทธิภาพ
ลองสอบถามทางผู้ให้บริการดูครับ ว่าเรามีปัญหาแบบนี้ เค้ามีแนวทางแก้ไขให้ยังไง  Smiley
บันทึกการเข้า

ไร้อนาคต
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 250



ดูรายละเอียด
« ตอบ #9 เมื่อ: 07 กันยายน 2010, 11:43:09 »

คือโฮสผม มันใช้หลายคนหลายเว็บ

มันขึ้น Too many connections

ผมอยากรู้เว็บที่ สคริปมีปัญหาทำอย่างไรครับ
« แก้ไขครั้งสุดท้าย: 07 กันยายน 2010, 11:44:36 โดย ไร้อนาคต » บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์