1.TCP/IP心跳包,XE2 DATASNAP本身已內置,設置幾個屬性就可以,這個經過了測試。不再需要像DELPHI 2010 DATASNAP那樣要自己寫代碼來處理。
2.XE2 DATASNAP內置的線程池是使用的INDY10的線程池。INDY10是阻塞+多線程的通訊控件。實際測試當中發現DATASNAP是一個客戶連接對應一個線程,
一直到客戶連接斷開線程才歸還線程池中,就算一個客戶連接以后啥事也不干,也要一直地占用服務端一個線程對象。有多少個連接客戶,服務端就要開啟多少個
線程。如果客戶數量比較多的話,這樣是很沒有效率的。開啟的線程較多,CPU的時間都花在線程的上下文切換上面。所以在大量並發連接的時候,還是首選完成端口。
3.DATASNAP的線程池滿了以后,新開的客戶是連接不上服務器的。這時客戶的鼠標一直呈等待狀態,不會彈出任何提示信息,如果此時有客戶關閉連接,
那么處於等待狀態的客戶就會自動連接上服務器。所以設置了線程池的MaxThreads屬性以后也就設定了最多的並發連接數量。
4.實際測試當中,開四百個左右的客戶端,每個客戶端隨機地每隔一秒鍾向服務器發出(查詢、新增、修改、提交)請求,長時間運行以后,應用服務器仍然健壯地
運行,頂不住的是SQL SERVER 2000數據庫服務器,會報等待處理的隊列過長的錯誤,SQL SERVER 2000數據庫自動暫停服務,需要手工啟動以后才能運行。
這說明,真正大量並發的(查詢、新增、修改、提交)操作數據的事件會導致數據庫當機。對於企業應用來說真正需要處理的是數據,對於企業應用架構來說,要
考慮的不僅僅是中間層應用服務器,還有數據庫服務器的承受能力。
