产çè¿ä¸ªé®é¢çåå æå¾å¤ï¼æ»ç»ä¸ç½ä¸çåæï¼
åå ä¸. MySQL æå¡å®äº
å¤ææ¯å¦å±äºè¿ä¸ªåå çæ¹æ³å¾ç®åï¼è¿å
¥mysqlæ§å¶å°ï¼æ¥çmysqlçè¿è¡æ¶é¿
mysql> show global status like 'uptime';
+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| Uptime | 3414707 |
+---------------+---------+
1 row in setæè
æ¥çMySQLçæ¥éæ¥å¿ï¼ççæ没æéå¯çä¿¡æ¯
å¦æuptimeæ°å¼å¾å¤§ï¼è¡¨æmysqlæå¡è¿è¡äºå¾ä¹
äºã说ææè¿æå¡æ²¡æéå¯è¿ã
å¦ææ¥å¿æ²¡æç¸å
³ä¿¡æ¯ï¼ä¹è¡¨åmysqlæå¡æè¿æ²¡æéå¯è¿ï¼å¯ä»¥ç»§ç»æ£æ¥ä¸é¢å 项å
容ã
åå äº. mysqlè¿æ¥è¶
æ¶
å³æ个mysqlé¿è¿æ¥å¾ä¹
没ææ°ç请æ±åèµ·ï¼è¾¾å°äºserver端çtimeoutï¼è¢«server强è¡å
³éã
æ¤ååéè¿è¿ä¸ªconnectionåèµ·æ¥è¯¢çæ¶åï¼å°±ä¼æ¥éserver has gone away
ï¼å¤§é¨åPHPèæ¬å°±æ¯å±äºæ¤ç±»ï¼
mysql> show global variables like '%timeout';
+----------------------------+----------+
| Variable_name | Value |
+----------------------------+----------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| wait_timeout | 28800 |
+----------------------------+----------+
10 rows in set
wait_timeout æ¯28800ç§ï¼å³mysqlé¾æ¥å¨æ æä½28800ç§å被èªå¨å
³é
åå ä¸. mysql请æ±é¾æ¥è¿ç¨è¢«ä¸»å¨kill
è¿ç§æ
åµååå äºç¸ä¼¼ï¼åªæ¯ä¸ä¸ªæ¯äººä¸ºä¸ä¸ªæ¯MYSQLèªå·±çå¨ä½
mysql> show global status like 'com_kill';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_kill | 21 |
+---------------+-------+
1 row in setåå å. Your SQL statement was too large.
å½æ¥è¯¢çç»æéè¶
è¿ max_allowed_packet ä¹ä¼åºç°è¿æ ·çæ¥éãå®ä½æ¹æ³æ¯æåºç¸å
³æ¥éçè¯å¥ã
ç¨select * into outfile çæ¹å¼å¯¼åºå°æ件ï¼æ¥çæ件大å°æ¯å¦è¶
è¿ max_allowed_packet ï¼å¦æè¶
è¿åéè¦è°æ´åæ°ï¼æè
ä¼åè¯å¥ã
mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)
ä¿®æ¹åæ°ï¼
mysql> set global max_allowed_packet=1024*1024*16;
mysql> show global variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name | Value |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.00 sec)
以ä¸æ¯è¡¥å
ï¼
åºç¨ç¨åºé¿æ¶é´çæ§è¡æ¹éçMYSQLè¯å¥ãæ§è¡ä¸ä¸ªSQLï¼ä½SQLè¯å¥è¿å¤§æè
è¯å¥ä¸å«æBLOBæè
longblobå段ãæ¯å¦ï¼å¾çæ°æ®çå¤çãé½å®¹æå¼èµ·MySQL server has gone awayã
ä»å¤©éå°ç±»ä¼¼çæ
æ¯ï¼MySQLåªæ¯å·å·ç说ï¼MySQL server has gone awayã
大æ¦æµè§äºä¸ä¸ï¼ä¸»è¦å¯è½æ¯å 为以ä¸å ç§åå ï¼
ä¸ç§å¯è½æ¯åéçSQLè¯å¥å¤ªé¿ï¼ä»¥è´è¶
è¿äºmax_allowed_packetç大å°ï¼å¦ææ¯è¿ç§åå ï¼ä½ åªè¦ä¿®æ¹my.cnfï¼å 大max_allowed_packetçå¼å³å¯ã
è¿æä¸ç§å¯è½æ¯å 为æäºåå 导è´è¶
æ¶ï¼æ¯å¦è¯´ç¨åºä¸è·åæ°æ®åºè¿æ¥æ¶éç¨äºSingletonçåæ³ï¼è½ç¶å¤æ¬¡è¿æ¥æ°æ®åºï¼ä½å
¶å®ä½¿ç¨çé½æ¯åä¸ä¸ªè¿æ¥ï¼èä¸ç¨åºä¸æ两次æä½æ°æ®åºçé´éæ¶é´è¶
è¿äºwait_timeoutï¼SHOW STATUSè½çå°æ¤è®¾ç½®ï¼ï¼é£ä¹å°±å¯è½åºç°é®é¢ãæç®åçå¤çæ¹å¼å°±æ¯æwait_timeoutæ¹å¤§ï¼å½ç¶ä½ ä¹å¯ä»¥å¨ç¨åºéæ¶ä¸æ¶é¡ºæmysql_ping()ä¸ä¸ï¼è¿æ ·MySQLå°±ç¥éå®ä¸æ¯ä¸ä¸ªäººå¨ææã
解å³MySQL server has gone away
1ãåºç¨ç¨åºé¿æ¶é´çæ§è¡æ¹éçMYSQLè¯å¥ãæ常è§çå°±æ¯ééæè
æ°æ§æ°æ®è½¬åãæè
é¿æ¶é´é²ç½®æ°æ®åºè¿æ¥ï¼æç项ç®å°±æ¯è¿æ ·ï¼
解å³æ¹æ¡ï¼
å¨my.cnfæ件ä¸æ·»å æè
ä¿®æ¹ä»¥ä¸ä¸¤ä¸ªåéï¼
1 wait_timeout=2880000
2 interactive_timeout = 2880000
å
³äºä¸¤ä¸ªåéçå
·ä½è¯´æå¯ä»¥googleæè
çå®æ¹æåãå¦æä¸è½ä¿®æ¹my.cnfï¼åå¯ä»¥å¨è¿æ¥æ°æ®åºçæ¶å设置CLIENT_INTERACTIVEï¼æ¯å¦ï¼
1 sql = "set interactive_timeout=24*3600";
2 mysql_real_query(...)
2ãæ§è¡ä¸ä¸ªSQLï¼ä½SQLè¯å¥è¿å¤§æè
è¯å¥ä¸å«æBLOBæè
longblobå段ãæ¯å¦ï¼å¾çæ°æ®çå¤ç
解å³æ¹æ¡ï¼
å¨my.cnfæ件ä¸æ·»å æè
ä¿®æ¹ä»¥ä¸åéï¼
1 max_allowed_packet = 10M(ä¹å¯ä»¥è®¾ç½®èªå·±éè¦ç大å°)
max_allowed_packet åæ°çä½ç¨æ¯ï¼ç¨æ¥æ§å¶å
¶éä¿¡ç¼å²åºçæ大é¿åº¦ã
æè¿å¨åä¸ä¸ªé¡¹ç®ï¼éè¦ç¨åº24å°æ¶å¼çï¼èä¸é´ä¼æå¾å¤é²ç½®æ¶é´ï¼äºæ¯æ¯å¤©æ©ä¸è¿æ¥ç¬¬ä¸æ¬¡æä½æ°æ®åºæ¶ï¼å°±åºç°äºâMySQL server has gone awayâè¿æ ·çé误æ示ï¼èè¿ä¸ªé®é¢çåå æ¯ç±äºæ°æ®åºè¿æ¥ç±äºé¿æ¶é´æ²¡ææä½èä¼è¢«èªå¨å
³éã解å³è¿ä¸ªé®é¢ï¼æçç»éªæ以ä¸ä¸¤ç¹ï¼æ许对大家æç¨å¤ï¼
第 ä¸ç§æ¹æ³ï¼
å½ç¶æ¯å¢å ä½ ç wait-timeoutå¼ï¼è¿ä¸ªåæ°æ¯å¨my.cnf(å¨Windowsä¸å°ä¸é¢æ¯my.iniï¼ä¸è®¾ç½®ï¼æçæ°æ®åºè´è·ç¨å¾®å¤§ä¸ç¹ï¼æ以ï¼æ设置çå¼ ä¸º10ï¼ï¼è¿ä¸ªå¼çåä½æ¯ç§ï¼æææ¯å½ä¸ä¸ªæ°æ®åºè¿æ¥å¨10ç§éå
没æä»»ä½æä½çè¯ï¼å°±ä¼å¼ºè¡å
³éï¼æ使ç¨çä¸æ¯æ°¸ä¹
é¾æ¥ ï¼mysql_pconnect),ç¨çæ¯mysql_connect,å
³äºè¿ä¸ªwait-timeoutçææä½ å¯ä»¥å¨MySQLçè¿ç¨å表ä¸çå° ï¼show processlist) ï¼ï¼ä½ å¯ä»¥æè¿ä¸ªwait-timeout设置ææ´å¤§ï¼æ¯å¦300ç§ï¼åµåµï¼ä¸è¬æ¥è®²300ç§è¶³å¤ç¨äºï¼å
¶å®ä½ ä¹å¯ä»¥ä¸ç¨è®¾ç½®ï¼MySQLé»è®¤æ¯8ä¸ªå° æ¶ãæ
åµç±ä½ çæå¡å¨åç«ç¹æ¥å®ã
第äºç§æ¹æ³ï¼
è¿ä¹æ¯æ个人认为æ好çæ¹æ³ï¼å³æ£æ¥ MySQLçé¾æ¥ç¶æï¼ä½¿å
¶éæ°é¾æ¥ã ï¼ç¨mysql_ping()ï¼
å¯è½å¤§å®¶é½ç¥éæmysql_pingè¿ä¹ä¸ä¸ªå½æ°ï¼å¨å¾å¤èµæä¸é½è¯´è¿ä¸ªmysql_pingç APIä¼æ£æ¥æ°æ®åºæ¯å¦é¾æ¥ï¼å¦ææ¯æå¼çè¯ä¼å°è¯éæ°è¿æ¥ï¼ä½å¨æçæµè¯è¿ç¨ä¸åç°äºå®å¹¶ä¸æ¯è¿æ ·åçï¼æ¯ææ¡ä»¶çï¼å¿
é¡»è¦éè¿ mysql_optionsè¿ä¸ªC APIä¼ éç¸å
³åæ°ï¼è®©MYSQLææå¼èªå¨é¾æ¥çé项ï¼MySQLé»è®¤ä¸ºä¸èªå¨è¿æ¥ï¼ï¼ä½ææµè¯ä¸åç°PHPçMySQLçAPIä¸å¹¶ä¸å¸¦è¿ä¸ªå½æ°ï¼ä½ éæ°ç¼è¾MySQLå§ï¼åµåµãä½mysql_pingè¿ä¸ªå½æ°è¿æ¯ç»äºè½ç¨å¾ä¸çï¼åªæ¯è¦å¨å
¶ä¸æä¸ä¸ªå°å°çæä½æå·§ï¼
1 //使ç¨mysql_pingæ¥èªå¨æ£æ¥éè¿ãç¨å°ä¸¤ä¸ªå½æ°ï¼ä¸ä¸ªæ¯mysql_pingï¼å¦å¤ä¸ä¸ªæ¯mysql_optionsãå
·ä½ä½¿ç¨æ¹æ³æ¯å¨mysql_real_connectä¹åï¼mysql_initä¹åï¼ä½¿ç¨mysql_optionsãç¨æ³å¦ä¸ï¼
2 char value = 1;
3 (void) mysql_init (&mysql);
4 mysql_options(&mysql, MYSQL_OPT_RECONNECT, (char *)&value); //设置èªå¨è¿æ¥
5 //ç¶åå¨ä»¥åmysql_queryä¹åé¦å
使ç¨mysql_pingè¿è¡å¤æï¼å¦æè¿æ¥å·²ç»æå¼ï¼ä¼èªå¨éè¿ã
6 mysql_ping(&mysql);
7 //ping()è¿ä¸ªå½æ°å
æ£æµæ°æ®è¿æ¥æ¯å¦æ£å¸¸ï¼å¦æ被å
³éï¼æ´ä¸ªæå½åèæ¬çMYSQLå®ä¾å
³éï¼åéæ°è¿æ¥ã
8 //ç»è¿è¿æ ·å¤çåï¼å¯ä»¥é常ææç解å³MySQL server has gone awayè¿æ ·çé®é¢ï¼èä¸ä¸ä¼å¯¹ç³»ç»é æé¢å¤çå¼éã
9 //mysql_pingä¼æ¹åmysql_affected_rowsçè¿åå¼ãæ以æ好æ¯ç»è¯¥MYSQLå¥æåå ä¸ä¸ªmutexï¼æ好æ¯è¯»åéï¼ãå½å
¶å®çº¿ç¨åå¤æ§è¡queryçæ¶åï¼å°±è·åéï¼æ§è¡å®å°±éæ¾ãèè¿ä¸ªæ§è¡mysql_pingç线ç¨å¨æ§è¡pingä¹é´å
å°è¯è·åéï¼å¦æè·å失败ï¼
10 //å继ç»sleepï¼æ¾å¼è¿ä¸è½®çpingã
温馨提示:答案为网友推荐,仅供参考