其實我一直想知道,究竟一題一題ajax提交答案,也就是說,點擊一題的答案,就ajax請求一下服務器,提交一次答案,能否撐到100個用戶同時考試呢?
準備環境
asp.net 2.0 + sql2000
ado.net插入數據
web stress application tool(微軟出產的web開發壓力測試軟件)
1.建數據庫exam_stress
腳本如下:
CREATE DATABASE exam_stress
GO
USE exam_stress
GO
CREATE TABLE [dbo].[Answer](
[ID] [int] NOT NULL identity primary key, --ID
[QID] [int] NOT NULL, --題目ID
[Answer] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL, --答案
[PAID] [int] NOT NULL, --答卷ID
[PID] [int] NOT NULL --試卷ID
) ON [PRIMARY]
GO
表的設計,是二範式與三範式之間
2.建web應用程序
1.建一Default.aspx頁面,上面有幾個按鈕,點擊時,發出ajax請求AnswerHandler.ashx
頁面代碼如下:
界面如下:
2.建AnswerHandler.ashx文件,直接插入一條數據到Answer表中,代碼如下:
然後發佈到IIS中,進行下一步的壓力測試
在http://download.microsoft.com/download/a/8/2/a82e7ba7-c772-4ec4-b186-2cf147f42c11/setup.exe
下載Microsoft Web Application Stress Tool,進行壓力測試
相關使用,請參考幫助,或上網查詢相關使用資料,其實看得懂英文的話,一般都會使用了。
用戶量100,平均1秒點擊2次,測試20分鐘,操作如下:
先點錄製
再輸入部署好的站點地址
然後點擊100下“提交答案”的按鈕
然後停止錄製
把用戶數設成100個
把delay(延遲)設成0到500
然後開始20分鐘的測試
如圖所示:
結果如下:
Overview
================================================================================
Report name: 2010-7-4 7:37:53
Run on: 2010-7-4 7:37:53
Run length: 00:20:01
Web Application Stress Tool Version:1.1.293.1
Number of test clients: 1
Number of hits: 453922
Requests per Second: 378.27
Socket Statistics
--------------------------------------------------------------------------------
Socket Connects: 454006
Total Bytes Sent (in KB): 230898.13
Bytes Sent Rate (in KB/s): 192.42
Total Bytes Recv (in KB): 381243.94
Bytes Recv Rate (in KB/s): 317.70
Socket Errors
--------------------------------------------------------------------------------
Connect: 0
Send: 0
Recv: 0
Timeouts: 0
RDS Results
--------------------------------------------------------------------------------
Successful Queries: 0
Script Settings
================================================================================
Server: 192.168.1.3
Number of threads: 100
Test length: 00:20:00
Warmup: 00:00:00
Cooldown: 00:00:00
Use Random Delay: Yes
Min Delay Time: 0
Max Delay Time: 500
Follow Redirects: Yes
Max Redirect Depth: 15
Clients used in test
================================================================================
localhost
Clients not used in test
================================================================================
Result Codes
Code Description Count
================================================================================
200 OK 445094
404 Not Found 8828
Page Summary
Page Hits TTFB Avg TTLB Avg Auth Query
================================================================================
POST /check_outchain.php 4415 0.07 0.07 No No
POST /check_outchain.php 4413 0.10 0.10 No No
GET /t/Default.aspx 4413 9.41 9.41 No No
GET /t/js/jquery-1.3.2.min.js 4412 0.13 0.41 No No
POST /t/AnswerHandler.ashx 4412 16.44 16.45 No No
POST /t/AnswerHandler.ashx 4411 11.84 11.85 No No
POST /t/AnswerHandler.ashx 4411 11.63 11.64 No No
POST /t/AnswerHandler.ashx 4410 12.27 12.29 No No
POST /t/AnswerHandler.ashx 4410 11.54 11.55 No No
POST /t/AnswerHandler.ashx 4409 14.62 14.64 No No
POST /t/AnswerHandler.ashx 4409 16.02 16.04 No No
POST /t/AnswerHandler.ashx 4408 14.91 14.93 No No
POST /t/AnswerHandler.ashx 4406 16.85 16.86 No No
POST /t/AnswerHandler.ashx 4406 18.19 18.20 No No
POST /t/AnswerHandler.ashx 4405 16.10 16.12 No No
POST /t/AnswerHandler.ashx 4402 14.75 14.76 No No
POST /t/AnswerHandler.ashx 4401 16.66 16.68 No No
POST /t/AnswerHandler.ashx 4401 22.10 22.11 No No
POST /t/AnswerHandler.ashx 4398 19.43 19.44 No No
POST /t/AnswerHandler.ashx 4398 19.73 19.74 No No
POST /t/AnswerHandler.ashx 4397 24.50 24.51 No No
POST /t/AnswerHandler.ashx 4397 21.16 21.17 No No
POST /t/AnswerHandler.ashx 4396 15.99 16.01 No No
POST /t/AnswerHandler.ashx 4394 22.11 22.13 No No
POST /t/AnswerHandler.ashx 4392 19.94 19.96 No No
POST /t/AnswerHandler.ashx 4391 21.69 21.70 No No
POST /t/AnswerHandler.ashx 4391 27.34 27.36 No No
POST /t/AnswerHandler.ashx 4388 26.66 26.67 No No
POST /t/AnswerHandler.ashx 4388 23.75 23.76 No No
POST /t/AnswerHandler.ashx 4387 31.67 31.68 No No
POST /t/AnswerHandler.ashx 4386 34.30 34.32 No No
POST /t/AnswerHandler.ashx 4386 33.95 33.96 No No
POST /t/AnswerHandler.ashx 4384 24.80 24.82 No No
POST /t/AnswerHandler.ashx 4383 28.05 28.07 No No
POST /t/AnswerHandler.ashx 4382 30.93 30.94 No No
POST /t/AnswerHandler.ashx 4382 21.14 21.15 No No
POST /t/AnswerHandler.ashx 4380 24.25 24.26 No No
POST /t/AnswerHandler.ashx 4379 19.11 19.13 No No
POST /t/AnswerHandler.ashx 4378 13.20 13.21 No No
POST /t/AnswerHandler.ashx 4378 11.38 11.40 No No
POST /t/AnswerHandler.ashx 4376 12.11 12.12 No No
POST /t/AnswerHandler.ashx 4376 13.20 13.21 No No
POST /t/AnswerHandler.ashx 4375 11.87 11.88 No No
POST /t/AnswerHandler.ashx 4375 11.66 11.67 No No
POST /t/AnswerHandler.ashx 4374 10.81 10.82 No No
POST /t/AnswerHandler.ashx 4373 11.21 11.23 No No
POST /t/AnswerHandler.ashx 4372 11.44 11.45 No No
POST /t/AnswerHandler.ashx 4371 10.60 10.62 No No
POST /t/AnswerHandler.ashx 4371 12.34 12.35 No No
POST /t/AnswerHandler.ashx 4370 10.45 10.46 No No
POST /t/AnswerHandler.ashx 4369 11.56 11.58 No No
POST /t/AnswerHandler.ashx 4368 11.74 11.75 No No
POST /t/AnswerHandler.ashx 4366 10.62 10.63 No No
POST /t/AnswerHandler.ashx 4364 11.07 11.09 No No
POST /t/AnswerHandler.ashx 4362 11.30 11.31 No No
POST /t/AnswerHandler.ashx 4361 10.97 10.99 No No
POST /t/AnswerHandler.ashx 4360 11.31 11.33 No No
POST /t/AnswerHandler.ashx 4359 11.61 11.62 No No
POST /t/AnswerHandler.ashx 4358 10.95 10.96 No No
POST /t/AnswerHandler.ashx 4354 11.06 11.08 No No
POST /t/AnswerHandler.ashx 4353 11.30 11.31 No No
POST /t/AnswerHandler.ashx 4352 10.14 10.16 No No
POST /t/AnswerHandler.ashx 4352 10.14 10.15 No No
POST /t/AnswerHandler.ashx 4352 10.05 10.06 No No
POST /t/AnswerHandler.ashx 4350 9.83 9.84 No No
POST /t/AnswerHandler.ashx 4350 11.49 11.50 No No
POST /t/AnswerHandler.ashx 4350 11.34 11.35 No No
POST /t/AnswerHandler.ashx 4349 11.20 11.21 No No
POST /t/AnswerHandler.ashx 4348 10.16 10.18 No No
POST /t/AnswerHandler.ashx 4344 10.64 10.66 No No
POST /t/AnswerHandler.ashx 4343 11.88 11.89 No No
POST /t/AnswerHandler.ashx 4343 10.80 10.82 No No
POST /t/AnswerHandler.ashx 4342 10.65 10.66 No No
POST /t/AnswerHandler.ashx 4341 10.74 10.75 No No
POST /t/AnswerHandler.ashx 4341 10.76 10.77 No No
POST /t/AnswerHandler.ashx 4339 10.38 10.39 No No
POST /t/AnswerHandler.ashx 4336 11.50 11.52 No No
POST /t/AnswerHandler.ashx 4335 10.19 10.21 No No
POST /t/AnswerHandler.ashx 4332 10.23 10.24 No No
POST /t/AnswerHandler.ashx 4331 11.84 11.86 No No
POST /t/AnswerHandler.ashx 4331 10.30 10.31 No No
POST /t/AnswerHandler.ashx 4330 10.39 10.41 No No
POST /t/AnswerHandler.ashx 4330 11.02 11.03 No No
POST /t/AnswerHandler.ashx 4330 10.98 10.99 No No
POST /t/AnswerHandler.ashx 4330 12.65 12.67 No No
POST /t/AnswerHandler.ashx 4329 11.91 11.93 No No
POST /t/AnswerHandler.ashx 4329 13.10 13.12 No No
POST /t/AnswerHandler.ashx 4327 12.03 12.04 No No
POST /t/AnswerHandler.ashx 4327 12.73 12.74 No No
POST /t/AnswerHandler.ashx 4327 10.87 10.89 No No
POST /t/AnswerHandler.ashx 4326 12.39 12.40 No No
POST /t/AnswerHandler.ashx 4325 11.56 11.57 No No
POST /t/AnswerHandler.ashx 4325 10.53 10.54 No No
POST /t/AnswerHandler.ashx 4324 11.65 11.67 No No
POST /t/AnswerHandler.ashx 4324 11.34 11.35 No No
POST /t/AnswerHandler.ashx 4323 12.32 12.34 No No
POST /t/AnswerHandler.ashx 4323 12.23 12.24 No No
POST /t/AnswerHandler.ashx 4323 10.85 10.87 No No
POST /t/AnswerHandler.ashx 4322 11.30 11.31 No No
POST /t/AnswerHandler.ashx 4322 11.03 11.05 No No
POST /t/AnswerHandler.ashx 4319 11.49 11.51 No No
POST /t/AnswerHandler.ashx 4317 11.49 11.50 No No
POST /t/AnswerHandler.ashx 4317 9.75 9.77 No No
POST /t/AnswerHandler.ashx 4316 11.54 11.56 No No
性能一直惟持這種狀態
我想,採用這種方式,是可以接受的,既然點擊一次提交一次,100個線程,200個用戶(我想,可以算是打開100個瀏覽器來做請求吧)內可以接受,那麼這樣決定就行了,也不用搞什麼一段時間批量保存一下答案這樣麻煩,因爲,測試是成本,維護也是成本。越複雜的功能,bug就越多。就要越要經過精力與時間的考驗
我們做開發的,只想把成本降到最低,無論是開發,維護或者是測試
也許可以換成linq,再做一個測試,對比一下性能。我也想知道,linq在壓力下,會是怎樣的表現,以前用的,都是開發出來就算了,都沒有了解過linq是不是想像中的慢,不過我今天看了一下linq生成的實體類的代碼,發覺用到反射的部分很少
這個是Linq寫的一般處理程序的代碼
性能一直是這樣,cpu佔用比ado.net高出了一倍
運行的測試報告如下:
Overview
================================================================================
Report name: 2010-7-4 8:30:07
Run on: 2010-7-4 8:30:07
Run length: 00:20:01
Web Application Stress Tool Version:1.1.293.1
Number of test clients: 1
Number of hits: 451511
Requests per Second: 376.26
Socket Statistics
--------------------------------------------------------------------------------
Socket Connects: 451593
Total Bytes Sent (in KB): 229702.12
Bytes Sent Rate (in KB/s): 191.42
Total Bytes Recv (in KB): 379495.73
Bytes Recv Rate (in KB/s): 316.25
Socket Errors
--------------------------------------------------------------------------------
Connect: 0
Send: 0
Recv: 0
Timeouts: 0
RDS Results
--------------------------------------------------------------------------------
Successful Queries: 0
Script Settings
================================================================================
Server: 192.168.1.3
Number of threads: 100
Test length: 00:20:00
Warmup: 00:00:00
Cooldown: 00:00:00
Use Random Delay: Yes
Min Delay Time: 0
Max Delay Time: 500
Follow Redirects: Yes
Max Redirect Depth: 15
Clients used in test
================================================================================
localhost
Clients not used in test
================================================================================
Result Codes
Code Description Count
================================================================================
200 OK 442724
404 Not Found 8787
Page Summary
Page Hits TTFB Avg TTLB Avg Auth Query
================================================================================
POST /check_outchain.php 4394 0.35 0.36 No No
POST /check_outchain.php 4393 0.39 0.40 No No
GET /t/Default.aspx 4393 11.35 11.37 No No
GET /t/js/jquery-1.3.2.min.js 4393 0.68 1.18 No No
POST /t/AnswerHandler.ashx 4390 19.46 19.46 No No
POST /t/AnswerHandler.ashx 4388 17.96 17.97 No No
POST /t/AnswerHandler.ashx 4388 16.80 16.81 No No
POST /t/AnswerHandler.ashx 4386 15.71 15.72 No No
POST /t/AnswerHandler.ashx 4384 16.22 16.22 No No
POST /t/AnswerHandler.ashx 4384 14.29 14.30 No No
POST /t/AnswerHandler.ashx 4383 15.16 15.17 No No
POST /t/AnswerHandler.ashx 4381 15.59 15.59 No No
POST /t/AnswerHandler.ashx 4380 16.06 16.06 No No
POST /t/AnswerHandler.ashx 4379 15.66 15.67 No No
POST /t/AnswerHandler.ashx 4379 14.94 14.95 No No
POST /t/AnswerHandler.ashx 4378 18.04 18.05 No No
POST /t/AnswerHandler.ashx 4377 15.39 15.39 No No
POST /t/AnswerHandler.ashx 4377 16.72 16.73 No No
POST /t/AnswerHandler.ashx 4375 16.97 16.98 No No
POST /t/AnswerHandler.ashx 4374 16.13 16.14 No No
POST /t/AnswerHandler.ashx 4373 17.30 17.31 No No
POST /t/AnswerHandler.ashx 4371 16.08 16.09 No No
POST /t/AnswerHandler.ashx 4370 16.49 16.50 No No
POST /t/AnswerHandler.ashx 4366 16.15 16.16 No No
POST /t/AnswerHandler.ashx 4364 16.46 16.47 No No
POST /t/AnswerHandler.ashx 4364 17.08 17.09 No No
POST /t/AnswerHandler.ashx 4363 15.89 15.90 No No
POST /t/AnswerHandler.ashx 4362 16.52 16.52 No No
POST /t/AnswerHandler.ashx 4360 15.68 15.69 No No
POST /t/AnswerHandler.ashx 4359 14.91 14.92 No No
POST /t/AnswerHandler.ashx 4358 16.85 16.86 No No
POST /t/AnswerHandler.ashx 4358 15.89 15.90 No No
POST /t/AnswerHandler.ashx 4357 16.63 16.63 No No
POST /t/AnswerHandler.ashx 4355 17.08 17.09 No No
POST /t/AnswerHandler.ashx 4354 15.35 15.36 No No
POST /t/AnswerHandler.ashx 4354 14.51 14.52 No No
POST /t/AnswerHandler.ashx 4353 15.72 15.73 No No
POST /t/AnswerHandler.ashx 4352 15.01 15.02 No No
POST /t/AnswerHandler.ashx 4352 14.64 14.64 No No
POST /t/AnswerHandler.ashx 4352 13.98 13.99 No No
POST /t/AnswerHandler.ashx 4352 14.27 14.28 No No
POST /t/AnswerHandler.ashx 4352 14.02 14.03 No No
POST /t/AnswerHandler.ashx 4350 15.28 15.29 No No
POST /t/AnswerHandler.ashx 4350 13.24 13.25 No No
POST /t/AnswerHandler.ashx 4350 15.30 15.31 No No
POST /t/AnswerHandler.ashx 4350 13.84 13.84 No No
POST /t/AnswerHandler.ashx 4348 15.68 15.69 No No
POST /t/AnswerHandler.ashx 4347 15.14 15.14 No No
POST /t/AnswerHandler.ashx 4344 15.24 15.25 No No
POST /t/AnswerHandler.ashx 4342 14.89 14.89 No No
POST /t/AnswerHandler.ashx 4341 17.35 17.36 No No
POST /t/AnswerHandler.ashx 4340 16.19 16.20 No No
POST /t/AnswerHandler.ashx 4338 17.02 17.02 No No
POST /t/AnswerHandler.ashx 4338 15.78 15.79 No No
POST /t/AnswerHandler.ashx 4336 16.24 16.25 No No
POST /t/AnswerHandler.ashx 4334 17.36 17.36 No No
POST /t/AnswerHandler.ashx 4333 16.02 16.03 No No
POST /t/AnswerHandler.ashx 4333 16.80 16.81 No No
POST /t/AnswerHandler.ashx 4333 16.43 16.44 No No
POST /t/AnswerHandler.ashx 4331 16.45 16.46 No No
POST /t/AnswerHandler.ashx 4331 17.80 17.81 No No
POST /t/AnswerHandler.ashx 4331 17.47 17.47 No No
POST /t/AnswerHandler.ashx 4331 15.41 15.42 No No
POST /t/AnswerHandler.ashx 4329 17.27 17.28 No No
POST /t/AnswerHandler.ashx 4328 17.59 17.60 No No
POST /t/AnswerHandler.ashx 4328 15.90 15.90 No No
POST /t/AnswerHandler.ashx 4326 15.88 15.89 No No
POST /t/AnswerHandler.ashx 4325 15.17 15.18 No No
POST /t/AnswerHandler.ashx 4324 16.58 16.59 No No
POST /t/AnswerHandler.ashx 4324 15.57 15.58 No No
POST /t/AnswerHandler.ashx 4324 15.45 15.46 No No
POST /t/AnswerHandler.ashx 4324 16.18 16.18 No No
POST /t/AnswerHandler.ashx 4323 16.73 16.74 No No
POST /t/AnswerHandler.ashx 4321 15.43 15.44 No No
POST /t/AnswerHandler.ashx 4321 17.23 17.24 No No
POST /t/AnswerHandler.ashx 4318 16.23 16.23 No No
POST /t/AnswerHandler.ashx 4316 15.75 15.76 No No
POST /t/AnswerHandler.ashx 4315 16.06 16.06 No No
POST /t/AnswerHandler.ashx 4315 17.51 17.52 No No
POST /t/AnswerHandler.ashx 4315 15.75 15.76 No No
POST /t/AnswerHandler.ashx 4315 15.14 15.15 No No
POST /t/AnswerHandler.ashx 4315 16.75 16.76 No No
POST /t/AnswerHandler.ashx 4314 16.85 16.86 No No
POST /t/AnswerHandler.ashx 4312 14.60 14.61 No No
POST /t/AnswerHandler.ashx 4311 17.96 17.97 No No
POST /t/AnswerHandler.ashx 4311 15.57 15.58 No No
POST /t/AnswerHandler.ashx 4311 17.74 17.75 No No
POST /t/AnswerHandler.ashx 4311 17.61 17.62 No No
POST /t/AnswerHandler.ashx 4311 16.29 16.30 No No
POST /t/AnswerHandler.ashx 4307 16.37 16.38 No No
POST /t/AnswerHandler.ashx 4307 16.10 16.11 No No
POST /t/AnswerHandler.ashx 4306 15.52 15.53 No No
POST /t/AnswerHandler.ashx 4305 15.24 15.25 No No
POST /t/AnswerHandler.ashx 4303 14.00 14.01 No No
POST /t/AnswerHandler.ashx 4303 14.13 14.14 No No
POST /t/AnswerHandler.ashx 4303 14.82 14.83 No No
POST /t/AnswerHandler.ashx 4302 16.16 16.17 No No
POST /t/AnswerHandler.ashx 4302 16.94 16.95 No No
POST /t/AnswerHandler.ashx 4299 15.43 15.44 No No
POST /t/AnswerHandler.ashx 4298 13.62 13.63 No No
POST /t/AnswerHandler.ashx 4296 15.04 15.05 No No
POST /t/AnswerHandler.ashx 4295 15.76 15.77 No No
POST /t/AnswerHandler.ashx 4295 15.00 15.01 No No
POST /t/AnswerHandler.ashx 4295 14.38 14.38 No No
對比之下,其實響應也沒有多大差別,不過就是使用linq的話,要求機器的配置要高一些
這只是簡單插入的測試比較。
如果是關於複雜的sql語句查詢的話(如分數統計等),那就不知道了,有時間,還想親自測試一下。