2013-05-11 107 views
0

我已經使用下面的代碼來創建使用Hibernate配置文件的數據庫連接。MySQL服務器終止和休眠數據庫連接不關閉

<property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
<property name="connection.username">xxx</property> 
<property name="connection.password">xxx</property> 
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
<property name="hibernate.jdbc.batch_size">50</property> 
<property name="show_sql">true</property> 


<!-- C3PO Connection pool setting --> 
<property name="hibernate.c3p0.min_size">3</property> 
<property name="hibernate.c3p0.max_size">100</property> 
<property name="hibernate.c3p0.timeout">5000</property> 
<property name="hibernate.c3p0.max_statements">50</property> 
<property name="hibernate.c3p0.acquire_increment">3</property> 
<property name="hibernate.c3p0.validate">true</property> 
<property name="hibernate.c3p0.idle_test_period">900</property> --> 
<!-- Connection pool setting --> 

看起來連接成功打開和關閉。如果10個用戶同時訪問網站,我的網站登錄頁面會在5或10分鐘後長時間旋轉,服務器宕機。另外我無法重啓它所說的進程意外終止的mysql服務器。然後我必須再次安裝mysql服務器。這在我的生產服務器中發生。我爲這個問題丟失了很多真實的數據。

請任何人都可以建議我一次訪問10000個用戶時有效地使用數據庫連接。處理這種情況的最佳方法是什麼?

回答

0

Ouch。構建一個測試服務器,運行負載測試器(JMeter是OK)並複製問題 - 這樣您就可以看到發生了什麼,而沒有真正的數據風險。

您目前沒有足夠的信息來識別問題。

一旦可以複製問題,請嘗試更改JDBC驅動程序&數據庫版本和相關組件。但請確保您的更改將通過重新創建它來解決問題。

這可能是其中一個症狀,是硬盤驅動器開始失敗。如果您的數據不僅受損,還必須重新安裝軟件。不常見,但要小心。


爲什麼重新啓動/或(如有必要)重新安裝MySQL,沒有將您的數據保留在數據庫文件中?

+0

是的,我已經writtent一小段代碼,以檢查是否關閉連接與否。在我的調試模式連接成功關閉。我不知道爲什麼連接正在增加生產mysql服務器。如果達到150左右,服務器就會下降。我是新來的MySQL。其實我失去了我的真實數據,然後我再次安裝。如何在不卸載mysql服務器的情況下獲得真實數據? – vijayr 2013-05-13 05:49:01

+0

嘗試使用JMeter重現該問題。如果不能重現它,你無法知道你所做的任何改變實際上都會修復它。您只需等待下一次停電/數據丟失事件,並可能遭受其中幾個事件。 – 2013-05-13 07:12:13

0

您的休眠配置看起來是正確的,我認爲這是導致這些問題的原因的數據庫。

的不管它正在經歷它不應該終止的問題,因此它看起來就像一個操作系統問題,如:

  • MySQL的內存用完
  • MySQL是消耗太多的CPU供電,並且內核
  • 被殺沒有分區上的可用磁盤空間,MySQL的運行
+0

謝謝Adam!按照您的指示,我已在服務器中驗證了以下內容。安裝在C驅動器中的Mysql服務器具有5 GB的磁盤空間。許多用戶訪問服務器連接的時間正在逐漸增加。如果其達到160或180以上連接應用開始旋轉。如果系統進入或重新啓動5分鐘。 – vijayr 2013-05-13 06:00:27

+0

一旦有超過160或180個連接,內存使用情況如何?你的機器是否有很多可用的虛擬內存?如果您在Linux上運行[this](http://www.oracle.com/technetwork/articles/servers-storage-dev/oom-killer-1911807.html)可能會有所幫助。 – 2013-05-13 10:13:15

+0

我的系統配置是Windows 2008 R2,C - 驅動器內存空間30 GB,可用空間5 GB(在C驅動器中安裝了mysql),RAM 2 GB。你認爲這是足夠的配置嗎? – vijayr 2013-05-14 05:06:56