លិបិក្រម
សេចក្តីផ្តើមអំពីកំហុស MySQL៖ ការតភ្ជាប់ច្រើនពេក
នៅពេលអ្នកមានកម្មវិធីគេហទំព័រ (គេហទំព័រប្លុកវេទិកា។ ល។ ) ដែលមានតំរូវការខ្ពស់នោះគឺថាមានអ្នកប្រើប្រាស់មួយចំនួនធំបានចូលទស្សនាវាប្រែទៅជាការប្រើប្រាស់កើនឡើងនៅលើម៉ាស៊ីនមេ។ ប្រសិនបើកម្មវិធីបណ្តាញបានប្រើមូលដ្ឋានទិន្នន័យ MySQL ហើយសំណួរគឺពិតជាមានច្រើន (ដោយសារតែកម្មវិធីមិនល្អរបស់គេហទំព័រឬដោយអ្នកប្រើប្រាស់ជាច្រើនកំពុងប្រើគេហទំព័រ), មានលទ្ធភាពមួយដែលកម្មវិធី MySQL នឹងបង្ហាញកំហុសនេះ:
mysqli_connect(): (HY000/1040): Too many connections
តើកម្មវិធី MySQL៖ កំហុសក្នុងការតភ្ជាប់ច្រើនមានន័យដូចម្តេច?
វាមានន័យថាមានសំណើរច្រើនពេកដែលចូលក្នុង MySQL ច្រើនជាងអ្វីដែលវាអាចទទួលយកបានច្រើនជាងអ្វីដែលវាអាចដាក់ជាជួររឺរង់ចាំ។
តើត្រូវដោះស្រាយវាយ៉ាងដូចម្តេច?
សាមញ្ញយើងត្រូវតែបង្កើនដែនកំណត់អតិបរមានៃសំណើ (ការតភ្ជាប់) ដែល MySQL គាំទ្រ។
ខ្ញុំនឹងផ្តល់ឱ្យអ្នកនូវជម្រើសពីរដើម្បីដោះស្រាយបញ្ហានេះ:
1. យើងកែសម្រួលឯកសារ /etc/mysql/my.cfg៖
nano /etc/mysql/my.cfg
នៅក្នុងវាយើងដាក់នៅខាងក្រោមកន្លែងដែលវានិយាយថា [mysql]៖
max_connections = ៥០០ max_user_connections = ៥០០
នេះនឹងបង្កើនចំនួនអតិបរមានៃការតភ្ជាប់ពី ១០០ (ដែលជាលំនាំដើម) ដល់ ៥០០ ។
យើងរក្សាទុកនិងចាកចេញបន្ទាប់មកយើងចាប់ផ្តើមសេវាកម្ម MySQL ឡើងវិញហើយនោះជាវា។ ការផ្លាស់ប្តូរនេះគឺមានជាអចិន្ត្រៃយ៍។
2. វិធីមួយទៀតដើម្បីដោះស្រាយបញ្ហានេះគឺការផ្លាស់ប្តូរដែនកំណត់អតិបរិមាស្មើគ្នាប៉ុន្តែតាមរយៈសំណួរ MySQL ។
ដំបូងយើងបង្ហាញពីដែនកំណត់បច្ចុប្បន្ន៖
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
នេះនឹងបង្ហាញយើងនូវអ្វីដូចនេះ:
+ ----------------- + ------- + | អថេរ _ ឈ្មោះ | តម្លៃ | + ----------------- + ------- + | ការតភ្ជាប់អតិបរិមា | ១៥១ | + ----------------- + ------- +
និយាយម៉្យាងទៀតដែនកំណត់បច្ចុប្បន្នគឺ ១៥១ ការតភ្ជាប់សូមលើកវាឡើងដល់ ៥០០ តាមមធ្យោបាយសំណួរ៖
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
ត្រៀមខ្លួនហើយ!
បញ្ហាតាមរបៀបនេះគឺនៅពេលដែលសេវាកម្មត្រូវបានចាប់ផ្តើមឡើងវិញការកំណត់រចនាសម្ព័ន្ធនេះត្រូវបានបាត់បង់។
ដើម្បីផ្គត់ផ្គង់ព័ត៌មានលម្អិតនេះអ្នកអាចបង្កើតស្គ្រីបប៊្លុកដែលរាល់ពេល X ផ្ទៀងផ្ទាត់ឬបន្ថែមបន្ទាត់ទៅដើមឬចាប់ផ្ដើមប្លុកដេមិន។ 😉
ប៉ុន្តែហេតុអ្វីបានជាខ្ញុំចង់ដឹងពីជម្រើសទី ២ នេះ? ... មែនហើយនោះហើយជាអ្វីដែលខ្ញុំធ្លាប់និយាយ។ ប៉ុន្តែកាលពីមួយខែមុនប្រព័ន្ធអ៊ូប៊ុនទូមិនអើពើនឹងវិធីសាស្ត្រលេខ ១ ដូច្នេះ ... ក្នុងករណីធ្ងន់ធ្ងរនៃប្រព័ន្ធប្រតិបត្តិការល្អយើងមានជំរើសទី ២ នេះដែលដំណើរការល្អផងដែរ😉
៥៧ យោបល់ទុកអ្នក
ប៉ុស្តិ៍ល្អ MySql …ពួកគេប្រើច្រើននៅក្នុង FreeBSD, … .KZKG ^ Gaara?, …វាជាការប្រសើរប្រសិនបើអ្នកធ្វើការប្រកាសអំពីវិធីតំឡើងនិងតំឡើង MySql នៅក្នុង FreeBSD ដូចជា៖ អេសអេសអេស (សុវត្ថភាព - សែល) អេសអេសអេស ( តាមរយៈគេហទំព័រ) SFTP (ពិធីសារផ្ទេរឯកសារអេអេសអេសអេសអេសអេស - អេហ្វអេស - ប្លូអេហ្វអេហ្វអេសអេហ្វអេស ៥ និងភីភីអេស។
ដើម្បីធ្វើដូចនេះខ្ញុំនឹងត្រូវដំឡើង FreeBSD ខ្ញុំមិនគិតថាខ្ញុំមានពេលឥឡូវនេះទេខ្ញុំទើបតែផ្លាស់ប្តូរការងារហើយខ្ញុំមានទំនួលខុសត្រូវថ្មីជាច្រើន។
ថ្មីៗនេះខ្ញុំត្រូវធ្វើអ្វីដែលស្រដៀងគ្នាសម្រាប់គម្រោងជាមួយងក់ក្បាល។ ក្នុងករណីរបស់ខ្ញុំវាបានកើនឡើងដល់ 250 ហើយវាគ្រប់គ្រាន់ហើយសម្រាប់ពេលនេះខ្ញុំធ្វើបានល្អ។ អរគុណសម្រាប់ព័ត៌មាន
សួស្តីតើអ្នកអាចជួយខ្ញុំពីរបៀបបញ្ចូល /etc/mysql/my.cfg បានទេ?
ខ្ញុំមាន VPS មួយប៉ុន្តែខ្ញុំមិនអាចចូលជាមួយភីធីធីបានទេ។
ស្វាគមន៍។
ដើម្បីដោះស្រាយបញ្ហានៃជម្រើសទី ១.- ជម្រើសដែលបានផ្តល់យោបល់និងរក្សាការផ្លាស់ប្តូរនៅពេលចាប់ផ្តើមម៉ាស៊ីនមេឡើងវិញឯកសារត្រូវតែត្រូវបានកែសម្រួលយោងទៅតាមកំណែ៖
/ ///////////////////////////// ////////////////////////////
// ខ្ញុំផ្លាស់ប្តូរថតឯកសារនៅក្នុងអ៊ូប៊ុនទូ ១៦.០៤ //////////////////////////
/ ///////////////////////////// ////////////////////////////
ខ្ញុំបានឃើញ /etc/mysql/mysql.conf.d/mysqld.cnf
/ ///////////////////////////// ////////////////////////////
// ខ្ញុំផ្លាស់ប្តូរថតឯកសារនៅក្នុងអ៊ូប៊ុនទូ ១៦.០៤ //////////////////////////
/ ///////////////////////////// ////////////////////////////
vi /etc/mysql/mariadb.conf.d/mysqld.cnf
/ ///////////////////////////// ////////////////////////////
// ខ្ញុំផ្លាស់ប្តូរថតឯកសារនៅក្នុងអ៊ូប៊ុនទូចាស់ ////////////////////////////
/ ///////////////////////////// ////////////////////////////
ខ្ញុំបានឃើញ /etc/mysql/my.cnf
/ ///////////////////////////// ////////////////////////////
// បន្ថែមបន្ទាត់នេះក្រោមស្លាក [mysqld] ឬ [mysql] //
// បន្ទាប់មកចាប់ផ្តើមម៉ាស៊ីនមេឡើងវិញ //
/ ///////////////////////////// ////////////////////////////
ការតភ្ជាប់អតិបរមា = ៥០០
ការបង្រៀនពីទទេនៅពេលគ្មានពេលវេលាប្រាប់អ្នកពីរបៀបផ្លាស់ប្តូរវា