程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .net中關於服務器開發的疑問

.net中關於服務器開發的疑問

編輯:關於.NET

經過很長時間的修改我的服務器版本從1.0修改到3.6,從一個客戶端一個線程到現在的異步方式處理 網絡,不過在服務器軟件開發方面的經驗依然不足,希望園子裡面的服務器方面的專家些能給些建議:

先介紹一下:該服務器的客戶端分為PC客戶端和車載終端,以下稱作客戶端和終端。服務器的Session 部分需要分別保存客戶端和終端狀態。以下是我設計的服務器的網絡部分:

程序運行後通過運行HandleCar和HandleUser的StartListen函數啟動線程來分別接收來自終端和客戶 端的數據,終端收到一包數據後處理數據:

由於終端沒隔10秒發送一包數據,因此數據量很大,在AnylizeGpsData(state,bufData)中,要通過數 據庫裡面該終端所屬線路查找該線路的所有用戶(通過Session裡面的Socket),然後將數據轉發到客戶端 ,並將數據保存到數據庫。現在的處理是來一包數據就要去找在線用戶,估計這裡有問題。

現在程序運行起了,出現了一下問題:

1. 現在終端的連接數已經有220個(PC客戶端很少,可以忽略),當服務器運行1-2天內存就達1個多G, 而且運行中觀察發現時間越長占用內存越大。

2. 程序裡面通過基類的事件通知UI,及時得到上線離線等一些消息,在程序運行幾分鐘後UI就死掉( 線程安全已經考慮)。

3. 數據庫是用的SQL Server 2005,當時間越長SQL Server占內存越大,1-2天後內存也達到了1個多G ,和前面一樣時間越長占內存越大。

如前面所說,是否是下面原因引起:

1. 收到一包數據寫入數據庫一條數據不可避免,但是在轉發數據的時候,每次都查詢了數據庫,加重 了數據庫的負擔?

2. 當一個終端連接上來後創建對象時使用的反射,會不會加重內存負擔?

3. 現在的服務器要求是能使終端數量達到2000個,在設計方面應該怎麼改進?

4. 占用內存是怎麼產生的?如何清理內存?

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved