Panimula sa error sa MySQL: Napakaraming Koneksyon
Kapag mayroon kang isang web application (site, blog, forum, atbp.) na nakakaranas ng mataas na demand, ibig sabihin ay maraming user ang bumibisita rito, isinasalin ito sa pagtaas ng pagkonsumo ng resource ng server. Kung ang web application na ito ay gumagamit ng MySQL database at napakarami ng mga query ( dahil sa mahinang programming ng website o maraming user ), maaaring ipakita ng MySQL ang error na ito:
mysqli_connect(): (HY000/1040): Too many connections
Ano ang ibig sabihin ng error sa MySQL: Masyadong Maraming Koneksyon?
Nangangahulugan ito na masyadong maraming mga kahilingan ang darating sa MySQL, higit sa maaari nitong tanggapin, higit sa maaari itong pumila o maghintay.
Paano ito malulutas?
Simple, dapat nating taasan ang maximum na limitasyon ng mga kahilingan (koneksyon) na sinusuportahan ng MySQL.
Bibigyan kita ng dalawang mga pagpipilian upang ayusin ang problemang ito:
1. Ine-edit namin ang file na /etc/mysql/my.cfg:
nano /etc/mysql/my.cfg
Sa loob nito inilalagay namin ang mga sumusunod sa ilalim ng kung saan sinasabi nito [MySQL]:
max_connections = 500 max_user_connections = 500
Dadagdagan nito ang maximum na bilang ng mga koneksyon mula sa 100 (na kung saan ay ang default) sa 500.
Nagse-save at lumabas kami, pagkatapos ay i-restart namin ang serbisyo ng MySQL at iyon lang. Permanente ang pagbabagong ito.
2. Ang isa pang paraan upang malutas ang problemang ito ay sa pamamagitan ng pagbabago ng pinakamataas na limitasyon, ngunit gamit ang isang MySQL query.
Ipakita muna natin ang kasalukuyang limitasyon:
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
Ipapakita nito sa amin ang isang bagay tulad nito:
+ ----------------- + ------- + | Variable_name | Halaga | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +
Sa madaling salita, ang kasalukuyang limitasyon ay 151 mga koneksyon, aba, itaas natin ito sa 500 sa pamamagitan ng isang query:
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
Handa!
Ang problema sa ganitong paraan ay kapag nai-restart ang serbisyo, nawala ang pagsasaayos na ito.
Para makabawi sa detalyeng ito maaari kang gumawa ng bash script na sumusuri sa bawat X na tagal ng oras, o kahit na idagdag ang linya sa simula o i-restart ang bloke ng daemon 
Pero bakit ko gustong malaman itong 2nd option? … well, iyon ang sinabi ko. Ngunit isang buwan na ang nakalipas binalewala ng isang Ubuntu Server ang paraan No.1, kaya... sa mga matinding kaso ng hangal na OS, mayroon kaming pangalawang opsyon na ito na gumagana rin 