我們注意到服務堆棧Web服務中的一些性能瓶頸,特別是像(註冊)Web服務這樣的盒子。ServiceStack註冊Web服務性能下降
我們跑了使用Visual Studio負載測試具有以下參數的負載測試:
- 1K併發用戶。
- 持續1分鐘。
- 測試迭代之間的5秒思考時間。
- 5秒採樣率。
的結果是如此糟糕,他們實際上是阻止我們與客戶去住:
19秒平均響應時間
環境規格有:
- 2在AWS Europe Region中使用c4.8xlarge EC2託管的Web前端(IIS)公開後面的實例(16GB-Ram & 8vCPU)包含負載平衡器。
- MySQL數據庫在AWS RDS託管內運行(db.m4.4xlarge)EC2實例 (64GB內存,高網絡流量,16個vCPU)
我們沒有特殊的代碼或特殊全局請求過濾器..只有默認配置..我們甚至嘗試過連接池,但這並沒有太大的幫助..
這種性能下降的原因是什麼?感謝您的支持,因爲我們處於客戶對ServiceStack框架本身提出質疑的地步,即使我們熱愛它的每一個方面,我們也開始懷疑這一點。
如果沒有一個可以看到的實際示例,您可能會遇到一些性能較差的代碼,不正確的API使用情況或您的環境中存在的其他問題,這些信息無濟於事,將帶有基準的獨立應用程序放在一起,問題,我們將看看, – mythz
嗨@mythz ..我們的自定義Web服務並沒有受到影響,並提供了0.6 - 1.0秒的平均響應時間跨越1k併發調用..只有默認的'註冊'和'身份驗證'網站服務正在遭受..這些方法是否有任何基準?在編寫它們的實現時考慮了性能?我們懷疑Fluent Validator部件,但這只是在黑暗中拍攝..你可以幫忙嗎? –
@MohammadZekrallah註冊服務需要執行驗證並在註冊的Auth提供程序中設置一個新用戶+調用多個會話/身份驗證回調。您可以檢查[RegisterService](https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack/Auth/RegisterService.cs)的impl以查看它的作用,例如,如果您未指定' ?AutoLogin = true'會更快。如果你擔心perf,你應該考慮自定義RegisterService將用戶直接插入UserAuth表格,否則不要在黑暗中拍攝,請剖析應用程序以查看瓶頸的位置 – mythz