模擬登錄併發
操作:測試,發登錄,並延時30ms發送1000字符串,服務器把字符串返回
操作系統:i3-4150 12GB
記錄:
終端個數 | 返回耗時 | 結論 |
---|---|---|
20 | 4秒 | 較好 |
50 | 2秒 | 較好 |
100 | 3秒 | 較好 |
150 | 20秒 | 較好 |
結論:該操作模擬併發,連接個數在一定範圍內,併發數據能較好處理,如100個連接終端內,延時較短。當終端併發個數較多情況下,併發數據堆積在隊列裏等待執行。表現爲客戶端延時較大收到服務器返回的數據。
優化建議:可以減小併發的情況,正常來說如登錄併發的概率不會太大,可以延時30ms執行,幾百連接使用基本無太大問題
模擬真實業務測試,內存佔用情況
操作:服務器端每隔10秒向所有終端發送數據,數據大小爲221912長度字符串(每次發送從文件中讀取出來),基本滿足業務使用
操作系統:i3-4150 12GB
記錄:
終端個數 | 內存最大值 | 內存使用相對穩定值 | 結論 |
---|---|---|---|
0 | 25MB | 25MB | 較低 |
50 | 180MB | 120MB | 一般 |
100 | 210MB | 160MB | 一般 |
150 | 200MB | 110MB | 較好 |
200 | 230MB | 110MB | 較好 |
250 | 160MB | 90MB | 較好 |
300 | 400MB | 250MB | 一般 |
400 | 420MB | 350MB | 一般 |
500 | 900MB | 700MB | 較差 |
每次發送從文件中讀取出來,會導致大量消耗內存,改成只讀取一次文件,並且發送頻率太高了,調整爲沒隔30秒:
終端個數 | 內存最大值 | 內存使用相對穩定值 | 結論 |
---|---|---|---|
100 | 50MB | 20MB | 一般 |
200 | 60MB | 30MB | 較好 |
300 | 70MB | 40MB | 較好 |
400 | 80MB | 50MB | 一般 |
500 | 110MB | 80MB | 一般 |
結論:單純連接使用的內存消耗量不大,500塊終端也維持在100MB以內。主要導致內存的還是業務數據產生的內存佔用。同時推送給所有終端的同時,如果數據量較多,一次推送完成的時間比較長,頻繁全局推送,會導致數據累積在隊列裏導致內存佔用過大
優化建議:1、避免一次全局推送數據量過大 2、業務數據導致的內存佔用是主要情況,避免內存泄露的情況,儘量多使用局部變量