Ubuntu 16.04下ASP.NET Core+ MySql + Dapper在 Jexus、nginx 下的簡單測試
一、環境及工具
1、伺服器
VirtualBox5.1.4 安裝 Ubuntu Server 16.04 amd64
MySql Ver 14.14 Distrib 5.6.21
Jexus 5.8.1
nginx 1.10.0
dotnet core 1.0.0-preview2-003121
supervisor 3.2.1
2、開發環境
VS2015 + Update 3
DotNetCore.1.0.0-VS2015Tools.Preview2.0.1.exe
3、測試工具
二、專案及程式碼
1、mysql 資料訪問、ORM
MySql.Data.Core 7.0.4-IR-191
Dapper 1.50.2
2、資料庫及表
資料庫:Test
資料表:User 兩個欄位:Id,Name,資料4條
CREATE TABLE `User` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Name` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, PRIMARYKEY (`Id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;-- ------------------------------ Records of User-- ----------------------------INSERT INTO `User` VALUES ('1', 'LXY-1');INSERT INTO `User` VALUES ('2', 'LXY-2');INSERT INTO `User` VALUES ('3', 'LXY-3');INSERT INTO `User` VALUES ('5', 'LXY-5-New');
專案,最簡單的三層結構,實現增刪改查(下載)
如需使用專案,請修改資料庫連線字串,在 appsettings.json 檔案裡:
{ "Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information" } }, "ConnectionStrings": {
"TestDb": "server=192.168.2.117;Port=51889;userid=test8888;password=test8888;database=Test;SslMode=None;" } }
專案使用ASP.NET CORE 自帶的依賴注入,沒有使用第三方的,Controller程式碼如下:
[Route("api/[controller]")]
public class UserController : Controller {
readonly IUserBll _userBll;
public UserController(IUserBll userBll) { _userBll = userBll; } [HttpGet]
public IEnumerable<User> Get() {
return _userBll.GetList(); } [HttpGet("{name}")]
public User Get(string name) {
return _userBll.Get(name); } [HttpPost]
public void Post([FromBody]User user) {
if(user == null || string.IsNullOrEmpty(user.Name)) {
return; } _userBll.Add(user); } [HttpPut]
public void Put([FromBody]User user) {
if (user == null || user.Id < 0 || string.IsNullOrEmpty(user.Name)) { return; } _userBll.Update(user); } [HttpDelete("{id}")]
public void Delete(int id) { _userBll.Delete(id); } }
三、ASP.NET CORE 在 Ubuntu 的配置
四、測試結果
說明:因為使用jexus埠轉發模式測試時,Requests:10000 Users:50 KeepAlive:False 的時候,就出現了很多錯誤連線,所以沒有繼續測試,不知道是不是我的配置有問題,配置如下:
###################### # Web Site: Default ######################################## port=8080root=/ /hoem/vsftpd/website/webapitest hosts=* #OR your.com,*.your.com # addr=0.0.0.0# CheckQuery=false NoLog=true AppHost.Port=5000# NoFile=/index.aspx # Keep_Alive=false # UseGZIP=false # UseHttps=true # DenyFrom=192.168.0.233, 192.168.1.*, 192.168.2.0/24# AllowFrom=192.168.*.* # DenyDirs=~/cgi, ~/upfiles # indexes=myindex.aspx # rewrite=^/.+?\.(asp|php|cgi|pl|sh)$ /index.aspx
埠轉發測試結果如下:
下面是 nginx 和 jexus 反向代理模式下的測試結果:
1. Requests:10000; Users:50;KeppAlive:False
nginx:
jexus:
2. Requests:10000; Users:50;KeppAlive:True
nginx:
jexus:
3. Requests:10000; Users:200;KeppAlive:False
nginx:
jexus:
4. Requests:10000; Users:200;KeppAlive:True
nginx:
jexus:
5. Requests:10000; Users:500;KeppAlive:False
nginx:
jexus:
6. Requests:10000; Users:500;KeppAlive:True
nginx:
jexus:
7. Requests:10000; Users:100;KeppAlive:False
nginx:
jexus:
8. Requests:10000; Users:1000;KeppAlive:True
nginx:
jexus:
五、總結
測試環境非常簡陋,測試到1000使用者的時候,路由器受不了了,其他應用程式都紛紛離線了,包括QQ。上面結果可能不是非常準確,但是有一定的參考價值。
只測試了GET,沒有測試POST。
感覺ASP.NET CORE 應該慢慢的可以使用到生產環境中了:)。
原文地址:http://www.cnblogs.com/Starts_2000/p/aspnetcore-ubuntu1604-mysql-dapper-jexus-nginx-test.html
.NET社群新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注