2014-01-28 23 views
0

我正在使用用於用戶登錄和身份驗證的MySQL數據庫的聊天服務器(消息保存在內存中,只保存到或裝載從數據庫關閉和啓動,分別)。每個聊天室都是作爲一個獨立的進程來實現的,因此,如果一個聊天室出現故障,整個服務器就沒有死機。當用戶連接時,每次他發佈消息時,房間服務器進程都會從數據庫讀取他的身份驗證信息。需要對每條消息重新進行身份驗證,以防止同一用戶進行多個會話。假定消息以合理的速率發佈(每個用戶每個消息約5-10秒鐘發送一條消息),空間服務器在服務器的整個生命週期內維持持久的MySQL連接還是服務器連接效率更高,請求並斷開連接?如果房間可能一次空閒幾天(無消息),答案是否會改變?最後,如果MySQL服務器運行在相同的硬件上而不是網絡上的另一臺計算機上,答案會改變嗎?爲服務器提供持久的mySQL連接或在需要時連接更有效

+0

看看[連接池](http://dev.mysql.com/tech-resources/articles/connection_pooling_with_connectorj.html)... –

回答

0

建立連接可能是一件昂貴的事情 - 從網絡角度以及對數據庫進行身份驗證。我已經將單個連接開放/關閉的網站移動到連接池,並且看到了巨大的性能提升(如果我記得,它大於20%)。

絕對要走的路。