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、测试工具
- HttpTest4Net:http://www.ikende.com/httptest
二、项目及代码
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 ('', 'LXY-1');
INSERT INTO `User` VALUES ('', 'LXY-2');
INSERT INTO `User` VALUES ('', 'LXY-3');
INSERT INTO `User` VALUES ('', '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 < || 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:


五、总结
- 测试环境非常简陋,测试到1000用户的时候,路由器受不了了,其他应用程序都纷纷离线了,包括QQ。上面结果可能不是非常准确,但是有一定的参考价值。
- 只测试了GET,没有测试POST。
- 感觉ASP.NET CORE 应该慢慢的可以使用到生产环境中了:)。
Ubuntu Server 16.04下ASP.NET Core Web Api + MySql + Dapper在 Jexus、nginx 下的简单测试的更多相关文章
- Docker容器环境下ASP.NET Core Web API
Docker容器环境下ASP.NET Core Web API应用程序的调试 本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Dock ...
- Docker容器环境下ASP.NET Core Web API应用程序的调试
本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试.在 ...
- 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持
HAL(Hypertext Application Language,超文本应用语言)是一种RESTful API的数据格式风格,为RESTful API的设计提供了接口规范,同时也降低了客户端与服务 ...
- Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程
Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一) 图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core W ...
- VirtualBox下安装Ubuntu Server 16.04
安装环境: Windows:确保磁盘空间足够,一般需要8个G左右. 所需文件: 首先在Ubuntu的官网上下载.iso的镜像文件,链接是:http://www.ubuntu.org.cn/server ...
- [原创]在HP DL380 G7服务器上部署基于Ubuntu Server 16.04 和 VirtualBox的云平台
对于一线开发人员来说,一提到虚拟机平台,往往会让人联想到在价格昂贵的服务器上部署VMware vSphere之类软件来实现. 笔者作为一个资深码农,也是一直梦寐着在自己家中打造一个真正的家庭私有云,秒 ...
- Ubuntu Server 14.04升级Ubuntu Server 16.04
Ubuntu Server 14.04升级Ubuntu Server 16.04 :转 http://blog.csdn.net/chszs 1.终端下执行命令 $ sudo apt-get upda ...
- 虚拟机Vmware成功安装Ubuntu Server 16.04中文版
最近想在Linux下学习Python的爬虫开发技术,经过认真考虑优先选择在在Ubuntu环境下进行学习Python的开发,虽然Ubuntu Server 16.04 LTS版本已经集成了Python ...
- Ubuntu server 16.04安装,无网卡驱动解决
因为使用一个软件必须要在ubuntu server 16.04上安装,因此先在裸机上安装ubuntu server 16.04,具体信息: 镜像版本:ubuntu-16.04.6-server-amd ...
随机推荐
- 关于大型网站技术演进的思考(十三)--网站静态化处理—CSI(5)
讲完了SSI,ESI,下面就要讲讲CSI了 ,CSI是浏览器端的动静整合方案,当我文章发表后有朋友就问我,CSI技术是不是就是通过ajax来加载数据啊,我当时的回答只是说你的理解有点片面,那么到底什么 ...
- Python--过滤Mysql慢日志
##================================================================## 先来个笑话: 刚交的女朋友让我去他家玩,我觉得空手不好,于是告 ...
- C#Light/Evil合体啦
决定将C#Light和C#Evil合并成一个项目,毕竟C#Evil包含C#Light所有的功能,分开两个,基本的表达式方面有什么bug还得两头改 暂时就C#Light/Evil这么叫吧,庆祝合体,画了 ...
- 关于Windows高DPI的一些简单总结
我们知道,关于高DPI的支持, Windows XP时代就开始有了, 那时关于高DPI的支持比较简单, 但是从Vista/Win7 到现在Win8 /Win8.1, Windows关于高DPI的支持已 ...
- Atitit 图像金字塔原理与概率 attilax的理解总结qb23
Atitit 图像金字塔原理与概率 attilax的理解总结qb23 1.1. 高斯金字塔 ( Gaussianpyramid): 拉普拉斯金字塔 (Laplacianpyramid):1 1.2 ...
- DataGridView的Cell事件的先后触发顺序
最近正在使用“DataGridView”对一个旧的Vs 2003开发的WINDOWS应用程序进行改造. 发现Vs 2003中的"DataGrid"中的一些事件已经在新的控件Data ...
- 使用maven下载jar包的source和javadoc
使用maven菜单下载sources和javadocs没什么反应,还是命令给力. 使用参数下载源码包与doc包: -DdownloadSources=true 下载源代码jar -DdownloadJ ...
- APP性能测试
方法一: 本地安装安卓模拟器,用LR选择模拟器录制方式录制 方法二: 手机真机需要root,可以在电脑上下载一键root工具(如卓大师),然后手机和电脑用数据线连接,然后root. 在手机上运行 Mo ...
- 23.实现一个名为Person的类和它的子类Employee,Employee有两个子类Faculty 和Staff。 具体要求如下: (1)Person类中的属性有:姓名name(String类型),地址address(String类型), 电话号码telphone(String类型)和电子邮件地址email(String类型); (2)Employee类中的属性有:办公室office(Stri
package banking; public class Person { private String name; public String address; public String tel ...
- struts1的一些基本用法和操作
入职两周了,项目是用struts1+ibatis框架搭建的,数据库是oracle,其他还行,关键是struts1之前没用用过,所以只好在网上狂查文档,最后大致整理了一些struts1的基本使用方法. ...