程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 處理mysql 1040毛病Too many connections的辦法

處理mysql 1040毛病Too many connections的辦法

編輯:MySQL綜合教程

處理mysql 1040毛病Too many connections的辦法。本站提示廣大學習愛好者:(處理mysql 1040毛病Too many connections的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是處理mysql 1040毛病Too many connections的辦法正文


從官方文檔曉得linux下面編譯裝置的mysql默許的銜接為100個,如許關於網站的需求來講是遠遠不敷的。
mysql官方告知我們須要修正max_connections的值,那末我們怎樣去修正呢?有兩種辦法

1、修正設置裝備擺設文件文件

修正/etc/my.cnf這個文件,在[mysqld]中新增max_connections=N,假如你沒有這個文件請從編譯源碼中的support-files文件夾中復制你所須要的*.cnf文件為到/etc/my.cnf。我應用的是my-medium.cnf,中型辦事器設置裝備擺設。例如我的[mysqld]的內容以下

[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 160M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
max_connections=1000

因為對mysql還不是很熟習,所以許多參數沒有修正。哈哈。。

2、非應用mysqld劇本主動啟動的用戶。

修正$MYSQL_HOME/bin/mysqld_safe文件
例如:/usr/local/mysql/bin/mysqld_safe這個文件
grep -n 'max_connection' $MYSQL_HOME/bin/mysqld_safe
修正對應行號的max_connections參數值
以上辦法為參考網上的做法寫的。

辦法二:

在PHP手冊外面找關於mysql_connect和mysql_pconnect的材料,上面是在php手冊中對這兩個函數的描寫:
mysql_connect 函數原型:
resource mysql_connect ( [string server [, string username [, string password [, bool new_link [, int client_flags]]]]])
前往:
假如勝利則前往一個MySQL 銜接標識,掉敗則前往FALSE。
描寫:
mysql_connect() 樹立一個到MySQL 辦事器的銜接。當沒有供給可選參數時應用以下默許值:server = 'localhost:3306',username =
辦事器過程一切者的用戶名,password = 空暗碼。
假如用異樣的參數第二次挪用mysql_connect(),將不會樹立新銜接,而將前往曾經翻開的銜接標識。參數new_link 轉變此行動並使
mysql_connect() 老是翻開新的銜接,乃至當mysql_connect() 曾在後面被用異樣的參數挪用過。參數client_flags 可所以以下常量的組合
:MYSQL_CLIENT_COMPRESS,MYSQL_CLIENT_IGNORE_SPACE 或許MYSQL_CLIENT_INTERACTIVE。
注: new_link 參數自PHP 4.2.0 起可用。
client_flags 參數自PHP 4.3.0 起可用。
一旦劇本停止,到辦事器的銜接就會被封閉。除非之前曾經挪用了mysql_close() 來封閉它。
mysql_pconnect :
函數原型:
resource mysql_pconnect ( [string server [, string username [, string password [, int client_flags]]]])
前往:
假如勝利則前往一個正的MySQL 耐久銜接標識符,失足則前往FALSE。
描寫:
mysql_pconnect() 樹立一個到MySQL 辦事器的銜接。假如沒有供給可選參數,則應用以下默許值:server = 'localhost:3306',
username = 辦事器過程一切者的用戶名,password = 空暗碼。client_flags 參數可所以以下常量的組合:MYSQL_CLIENT_COMPRESS,
MYSQL_CLIENT_IGNORE_SPACE 或許MYSQL_CLIENT_INTERACTIVE。
server 參數也能夠包含端標語,例如"hostname:port",或許是本機套接字的的途徑,例如":/path/to/socket"。
注: 對":port" 的支撐是3.0B4 版添加的。
對":/path/to/socket" 的支撐是3.0.10 版添加的。 二者之間的差別 :
mysql_pconnect() 和mysql_connect() 異常類似,但有兩個重要差別。
起首,當銜接的時刻本函數將先測驗考試尋覓一個在統一個主機上用異樣的用戶名和暗碼曾經翻開的(耐久)銜接,假如找到,則前往此銜接標識而不翻開新銜接。
其次,當劇本履行終了後到SQL 辦事器的銜接不會被封閉,此銜接將堅持翻開以備今後應用(mysql_close() 不會封閉由mysql_pconnect() 樹立的銜接)。
可選參數client_flags 自PHP 4.3.0 版起可用。此種銜接稱為"耐久的"。

小結一下,要包管你的體系不會湧現Too many connections 毛病,須要留意兩點:
1.包管你的apache的最年夜過程數不跨越mysql的最年夜銜接數;
2.不要在法式外面用過量mysql_pconnect銜接到統一個數據庫辦事器(一個就夠了).這須要好的編碼習氣和標准.特殊是赓續的給體系增長
新的功效,假如不重視體系架構和編碼標准,當體系的龐雜度到了必定的水平,全部體系就變得沒法保護了.湧現成績的時刻處理起來就很費事了.
處理辦法是修正/etc/mysql/my.cnf,添加以下一行:
set-variable = max_connections=500
或在啟動敕令中加上參數max_connections=500
就是修正最年夜銜接數,然後重啟mysql.默許的銜接數是100,太少了,所以輕易湧現如題毛病

以上摘自 宋利興的專欄 以下為彌補:

1.能夠是mysql的max connections設置的成績
2.能夠是屢次insert,update操作沒有封閉session,須要在spring裡設置裝備擺設transaction支撐。

處理:
1.修正tomcat裡的session 的time-out時光削減為20,(不是必改項)
2.對處置量年夜的對數據庫insert或update的操作供給transaction支撐.

=======================================
上面的是處理方法:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"

緣由:

由於你的mysql裝置目次下的my.ini中設定的並發銜接數太少或許體系忙碌招致銜接數被占滿


處理方法:

翻開MYSQL裝置目次翻開MY.INI找到max_connections(在年夜約第93行)默許是100 普通設置到500~1000比擬適合,重啟mysql,如許1040毛病就處理啦。
max_connections=1000

必定要從新啟動MYSQL能力失效

CMD->

net stop mysql

net start mysql

關於轉變innodb_log_file_size後沒法啟動mysql的成績

innodb_buffer_pool_size=768M
innodb_log_file_size=256M
innodb_log_buffer_size=8M
innodb_additional_mem_pool_size=4M
innodb_flush_log_at_trx_commit=0
innodb_thread_concurrency=20
以上是對innodb引擎的初步優化, 發明是更新innodb_log_file_size=256M時刻湧現了成績,只需加上這個就沒法啟動,

後來才曉得本來要STOP辦事先,然後再刪除本來的文件………
翻開/MySQL Server 5.5/data

刪除ib_logfile0, ib_logfile1........ib_logfilen
再開啟選項,勝利啟動。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved