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 = 500 max_user_connections = 500
ಇದು ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯ ಸಂಪರ್ಕಗಳನ್ನು 100 ರಿಂದ (ಡೀಫಾಲ್ಟ್ ಆಗಿದೆ) 500 ಕ್ಕೆ ಹೆಚ್ಚಿಸುತ್ತದೆ.
ನಾವು ಉಳಿಸುತ್ತೇವೆ ಮತ್ತು ನಿರ್ಗಮಿಸುತ್ತೇವೆ, ನಂತರ ನಾವು MySQL ಸೇವೆಯನ್ನು ಮರುಪ್ರಾರಂಭಿಸುತ್ತೇವೆ ಮತ್ತು ಅದು ಇಲ್ಲಿದೆ. ಈ ಬದಲಾವಣೆ ಶಾಶ್ವತವಾಗಿದೆ.
2. ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವ ಇನ್ನೊಂದು ಮಾರ್ಗವೆಂದರೆ ಗರಿಷ್ಠ ಮಿತಿಯನ್ನು ಸಮಾನವಾಗಿ ಬದಲಾಯಿಸುವುದು, ಆದರೆ MySQL ಪ್ರಶ್ನೆಯ ಮೂಲಕ.
ಮೊದಲು ಪ್ರಸ್ತುತ ಮಿತಿಯನ್ನು ತೋರಿಸೋಣ:
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
ಇದು ನಮಗೆ ಈ ರೀತಿಯದನ್ನು ತೋರಿಸುತ್ತದೆ:
+ ----------------- + ------- + | ವೇರಿಯಬಲ್_ಹೆಸರು | ಮೌಲ್ಯ | + ----------------- + ------- + | ಗರಿಷ್ಠ_ಸಂಪರ್ಕಗಳು | 151 | + ----------------- + ------- +
ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಪ್ರಸ್ತುತ ಮಿತಿ 151 ಸಂಪರ್ಕಗಳು, ಅಲ್ಲದೆ, ಪ್ರಶ್ನೆಯ ಮೂಲಕ ಅದನ್ನು 500 ಕ್ಕೆ ಏರಿಸೋಣ:
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
ರೆಡಿ!
ಈ ರೀತಿಯಾಗಿ ಸಮಸ್ಯೆ ಏನೆಂದರೆ, ಸೇವೆಯನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿದಾಗ, ಈ ಕಾನ್ಫಿಗರೇಶನ್ ಕಳೆದುಹೋಗುತ್ತದೆ.
ಈ ವಿವರವನ್ನು ಪೂರೈಸಲು, ನೀವು ಪ್ರತಿ X ಸಮಯವನ್ನು ಪರಿಶೀಲಿಸುವ ಬ್ಯಾಷ್ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಮಾಡಬಹುದು, ಅಥವಾ ಡೀಮನ್ನ ಪ್ರಾರಂಭ ಅಥವಾ ಮರುಪ್ರಾರಂಭಿಸುವ ಬ್ಲಾಕ್ಗೆ ಸಾಲನ್ನು ಸೇರಿಸಿ
ಆದರೆ ಈ 2 ನೇ ಆಯ್ಕೆಯನ್ನು ನಾನು ಏಕೆ ತಿಳಿಯಲು ಬಯಸುತ್ತೇನೆ? ... ಅಲ್ಲದೆ, ನಾನು ಹೇಳುತ್ತಿದ್ದೆ. ಆದರೆ ಒಂದು ತಿಂಗಳ ಹಿಂದೆ ಉಬುಂಟು ಸರ್ವರ್ ಸಂಖ್ಯೆ 1 ಅನ್ನು ನಿರ್ಲಕ್ಷಿಸಿದೆ, ಆದ್ದರಿಂದ ... ಸಿಲ್ಲಿ ಓಎಸ್ನ ವಿಪರೀತ ಸಂದರ್ಭಗಳಲ್ಲಿ, ನಮ್ಮಲ್ಲಿ ಈ 2 ನೇ ಆಯ್ಕೆ ಇದೆ, ಅದು ಹಾಗೆಯೇ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ
ಒಳ್ಳೆಯ ಪೋಸ್ಟ್, MySQL… ಅವರು FreeBSD,… .KZKG ^ Gaara?,… (ಎಸ್ಎಸ್ಹೆಚ್-ಫೈಲ್ ಟ್ರಾನ್ಸ್ಫರ್ ಪ್ರೊಟೊಕಾಲ್), ಅಪಾಚೆ - ಪಿಎಚ್ಪಿ- ಮೈಸ್ಕ್ಎಲ್, ಪಿಎಚ್ಪಿ 5 ಮತ್ತು ಪಿಎಚ್ಪಿಎಸ್ಇನ್ಫೋ ವಿಸ್ತರಣೆಗಳು.
ಇದಕ್ಕಾಗಿ ನಾನು ಫ್ರೀಬಿಎಸ್ಡಿಯನ್ನು ಸ್ಥಾಪಿಸಬೇಕಾಗಿತ್ತು, ನನಗೆ ಇದೀಗ ಸಮಯವಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುವುದಿಲ್ಲ, ನಾನು ಉದ್ಯೋಗಗಳನ್ನು ಬದಲಾಯಿಸಿದ್ದೇನೆ ಮತ್ತು ನನಗೆ ಅನೇಕ ಹೊಸ ಜವಾಬ್ದಾರಿಗಳಿವೆ
ನಾನು ಇತ್ತೀಚೆಗೆ ನೋಡೆಜ್ಗಳೊಂದಿಗಿನ ಯೋಜನೆಗಾಗಿ ಇದೇ ರೀತಿಯದ್ದನ್ನು ಮಾಡಬೇಕಾಗಿತ್ತು. ನನ್ನ ವಿಷಯದಲ್ಲಿ, ನಾನು 250 ಕ್ಕೆ ಏರಿದೆ ಮತ್ತು ಅದು ನನಗೆ ಸಾಕು, ಈಗ ನಾನು ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದ್ದೇನೆ. ಮಾಹಿತಿಗಾಗಿ ಧನ್ಯವಾದಗಳು
ಹಲೋ, /etc/mysql/my.cfg ಅನ್ನು ಹೇಗೆ ನಮೂದಿಸಬೇಕು ಎಂದು ನನಗೆ ಸಹಾಯ ಮಾಡಬಹುದೇ?
ನನ್ನ ಬಳಿ ವಿಪಿಎಸ್ ಇದೆ, ಆದರೆ ನಾನು ಪುಟ್ಟಿಯೊಂದಿಗೆ ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.
ಗ್ರೀಟಿಂಗ್ಸ್.
ಆಯ್ಕೆ 1 ರ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು- ಕಾಮೆಂಟ್ ಮಾಡಿದ ಆಯ್ಕೆ, ಮತ್ತು ಸರ್ವರ್ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸುವಾಗ ಬದಲಾವಣೆಗಳನ್ನು ಇರಿಸಿ, ಫೈಲ್ ಅನ್ನು ಆವೃತ್ತಿಯ ಪ್ರಕಾರ ಸಂಪಾದಿಸಬೇಕು:
///////////////////////////////////////////////// ///////////////////
// ನಾನು ಉಬುಂಟು 16.04 ರಲ್ಲಿ ಡೈರೆಕ್ಟರಿಯನ್ನು ಬದಲಾಯಿಸುತ್ತೇನೆ ////////////////////////
///////////////////////////////////////////////// ///////////////////
ನಾನು /etc/mysql/mysql.conf.d/mysqld.cnf ನೋಡಿದೆ
///////////////////////////////////////////////// ///////////////////
// ನಾನು ಉಬುಂಟು 15.04 ರಲ್ಲಿ ಡೈರೆಕ್ಟರಿಯನ್ನು ಬದಲಾಯಿಸುತ್ತೇನೆ ////////////////////////
///////////////////////////////////////////////// ///////////////////
vi /etc/mysql/mariadb.conf.d/mysqld.cnf
///////////////////////////////////////////////// ///////////////////
// ನಾನು ಉಬುಂಟು ಹಳೆಯ ಡೈರೆಕ್ಟರಿಯನ್ನು ಬದಲಾಯಿಸುತ್ತೇನೆ //////////////////////
///////////////////////////////////////////////// ///////////////////
ನಾನು /etc/mysql/my.cnf ಅನ್ನು ನೋಡಿದೆ
///////////////////////////////////////////////// ///////////////////
// ಈ ಸಾಲನ್ನು [mysqld] ಅಥವಾ [mysql] ಟ್ಯಾಗ್ ಅಡಿಯಲ್ಲಿ ಸೇರಿಸಿ //
// ನಂತರ ಸರ್ವರ್ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ //
///////////////////////////////////////////////// ///////////////////
ಗರಿಷ್ಠ_ಸಂಪರ್ಕಗಳು = 500
ಮೊದಲಿನಿಂದ ಟ್ಯುಟೋರಿಯಲ್ ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಅದನ್ನು ಹೇಗೆ ಬದಲಾಯಿಸುವುದು ಎಂದು ಹೇಳುತ್ತದೆ