Skip to content

View MySQL process list

Last updated on May 17, 2015

เซิร์ฟเวอร์ที่ใช้งานอยู่ใช้งาน MySQL แล้วเจอ “Too Many Connection” บ่อยวิธีแก้ปัญหาที่ผมทำอยู่คือแก้ตัวแปร max_connections  ในไฟล์ /etc/mysql/my.cnf  ให้มากขึ้นเท่านึงก่อนแล้วดูว่ายังเจอปัญหาอยู่หรือเปล่า ถ้ายังมีปัญหาอยู่ก็เพิ่มขึ้นอีก

แต่บางทีการเพิ่มจำนวน connection ก็เป็นการแก้ปัญหาไม่ถูกจุดเพราะปัญหาจริงๆ อาจไม่ได้อยู่ที่ตัว MySQL แต่เป็นเพราะเขียนโค้ดไม่ดี มีการ connect MySQL แล้วไม่ยอม close connection เมื่อเลิกใช้ทำให้ app ไม่สามารถใช้งาน MySQL ได้ต้อง restart ใหม่

วิธี track ว่า db ไหนมีการใช้ connection อยู่บ้าง ใช้ MySQL command login เข้าไปแล้วเรียกดู process list ด้วยคำสั่ง

mysql> show full processlist;

โปรแกรมจะโชว์ process ของ db ที่ใช้งานอยู่ทั้งหมด ถ้า db ไหนมีการใช้งานเยอะโดยไม่จำเป็นแสดงว่าอาจจะมีการ connect ค้างไว้ไม่ยอมปิด ก็สั่ง kill ทิ้งด้วย process id (คำสั่งข้างบนจะแสดง pid ด้วย) ได้ เช่น

mysql> kill 1234;

อ้างอิง

Terminating idle mysql connections

 

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.