Ubuntu Server 16.04下ASP.NET Core Web Api + 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,
  PRIMARY KEY (`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 的配置

  參考大神 savorboard 的博客:http://www.cnblogs.com/savorboard

四、測試結果

   說明:因為使用jexus端口轉發模式測試時,Requests:10000   Users:50  KeepAlive:False 的時候,就出現了很多錯誤連接,所以沒有繼續測試,不知道是不是我的配置有問題,配置如下:

######################
# Web Site: Default
########################################

port=8080
root=/ /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:

  

  

 

五、總結

  1. 測試環境非常簡陋,測試到1000用戶的時候,路由器受不了了,其他應用程序都紛紛離線了,包括QQ。上面結果可能不是非常准確,但是有一定的參考價值。
  2. 只測試了GET,沒有測試POST。
  3. 感覺ASP.NET CORE 應該慢慢的可以使用到生產環境中了:)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM