我有具有以下部件的Web應用程序:MySQL和Hibernate的同時讀寫
評論員通過一個基於瀏覽器的工具,不斷地做比賽的解說。使用hibernat將註釋插入到數據庫中。
很多用戶正在訪問URL來閱讀評論。 Hibernate正在讀取步驟#1中由評論員更新的表中的數據。
有一些存儲過程,以及設置爲每1小時運行一次。他們中很少有人訪問同一張表(用於步驟#1和#2),用於讀寫和更新目的。
現在我的問題是,無論何時該站點有100多個併發用戶在觀看特定的匹配評論,我的MySQL就會關閉。它顯示了大量的查詢卡在processlist中。他們中的很多人都在「複製到臨時表」狀態。這使得JBOSS頻繁重啓。
我正在使用hibernate中的事務處理讀寫操作。請幫忙,因爲我因爲這些崩潰而失去大賽。
有關網站400個併發用戶,在Linux系統工作正常,在1.x中的正常運行時間但是,每當某個預定的存儲過程運行時(針對同一個表),正常運行時間就會超過20,並導致mysql崩潰。很多時候我也遇到過mysql顯示processlist的進程太多,但都處於睡眠模式!!! –
存儲過程可以鎖定可能會干擾Web應用程序的資源(此處爲表格列)即其服務。你可以發佈一個讓數據庫崩潰的存儲過程嗎?順便說一下,你使用哪個引擎作爲表格? – Johanna
我正在使用innodb。存儲過程只是從表中的行中讀取具有列dirty_bit = 1的行,然後在其他表中進行一些插入並設置dirty_bit = 0.它每分鐘運行一次,大部分時間dirty_bit爲0,因此不執行任何插入/更新。 –