• 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 应该慢慢的可以使用到生产环境中了:)。
  • 相关阅读:
    51单片机串口实验时波特率怎么调才合适
    什么是GPS的冷启动、温启动和热启动?
    单片机pc指针
    80C51存储器与C51内存优化
    C51变量的存储
    单片机结构体内存的分配
    单片机内程序运行的时候ram空间是如何分配的?
    51单片机存储器结构
    AD分辨率和精度区别
    过采样与欠采样
  • 原文地址:https://www.cnblogs.com/Starts_2000/p/aspnetcore-ubuntu1604-mysql-dapper-jexus-nginx-test.html
Copyright © 2020-2023  润新知