錯誤緣由:mysql
太多的鏈接數,登陸用戶過多,配置的mysql鏈接數太小,或者某些鏈接沒有關閉,致使鏈接數過大。linux
問題的解決:sql
修改mysql的my.ini配置文件,網上的說法:mysql安裝目錄下的my.ini中設定的併發鏈接數太少或者系統繁忙致使鏈接數被佔滿。併發
而項目實際上部署在linux系統上,須要找到my.cnf的配置文件,通常在etc/my.cnf,找到這個文件,添加以下行:大數據
set-variable=max_connections=1000
set-variable=max_user_connections=500spa
set-variable=wait_timeout=200ci
以後重啓mysql,生效。資源
net stop mysql部署
net start mysqlget
max_connections: 爲設置最大的鏈接數
max_user_connections:設置每用戶最大的 鏈接數500
wait_timeout:表示200秒後將關閉空閒鏈接,但對正在工做的鏈接不受影響。
//從新啓動MySQL後使用下面的命令查看修改是否成功
# mysqladmin -uroot -p variables
Password:
//能夠看到如下項說明修改爲功
| max_connections | 1000
| max_user_connections | 500
| wait_timeout | 200
解決方法二:
還有一個可能就是代碼裏打開了太多的鏈接,可是忘記了在finally塊裏面關閉,從而致使在處理大數據的時候,拋出異常。下面這樣的代碼就不會有異常了。
try{
conn=Good.getConnection(); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE , ResultSet.CONCUR_UPDATABLE); String sql1="insert into cat_garbage values('"+rs.getInt("id")+"','"+rs.getInt("cid")+"','"+rs.getString("name")+"','"+rs.getString("keyword")+"')"; stmt.executeUpdate(sql1); } catch(SQLException|ClassNotFoundException|IOException e) { e.printStackTrace(); } finally { if(stmt!= null) stmt.close(); if(conn!= null) conn.close(); }
要隨時記住關閉rs,stmt,conn等資源,學會使用finally,在finally中,這些語句必定會執行