tomcat伺服器莫名停止服務的原因
阿新 • • 發佈:2018-11-30
我們初學者朋友會不會遇到這麼一個場景,就是在費了好大功夫配置好的tomcat伺服器,也連結上了mysql,但是一段時間後再連上的時候卻發現tomcat不在服務狀態,什麼沒做但是卻在tomcat的執行日誌裡面發現了報錯資訊,這個時候,不妨從以下的原因入手:
tips1:MySQL經典8小時問題
MySQL 的預設設定下,當一個連線的空閒時間超過8小時後,MySQL 就會斷開該連線,而 c3p0 連線池則以為該被斷開的連線依然有效。在這種情況下,如果客戶端程式碼向 c3p0 連線池請求連線的話,連線池就會把已經失效的連線返回給客戶端,客戶端在使用該失效連線的時候即丟擲異常。
這就是傳說中的 mySql 8小時問題。
解決這個問題的辦法有三種:
1. 增加 MySQL 的 wait_timeout 屬性的值。
修改 /etc/mysql/my.cnf 檔案,在 [mysqld] 節中設定:
wait_timeout = 86400
相關引數,紅色部分
mysql> show variables like '%timeout%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| connect_timeout
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout
| slave_net_timeout | 3600 |
| wait_timeout | 28800 |
+--------------------------+-------+
同一時間,這兩個引數只有一個起作用。到底是哪個引數起作用,和使用者連線時指定的連線引數相關,預設情況下是使用wait_timeout。我建議是將這兩個引數都修改,以免引起不必要的麻煩。
這兩個引數的預設值是8小時(60*60*8=28800)。
測試將這兩個引數改為0,結果出人意料,系統自動將這個值設定為28800 。
換句話說,不能將該值設定為永久。
將這2個引數設定為1年(60*60*24*365=31536000)