kestrel java_Kestrel Web 服务器学习笔记
前言:
ASP.NET Core 已经不是啥新鲜的东西,很多新启的项目都会首选 Core 做开发;
而 Kestrel 可以说是微软推出的唯一真正实现跨平台的 Web 服务器了;
Kestrel 利用一个名为 KestrelEngine 的网络引擎实现对请求的监听、接收和响应;
Ketrel 之所以具有跨平台的特质,源于 KestrelEngine 是在一个名为 libuv 的跨平台网络库上开发的;
Kestrel is a cross-platform web server for ASP.NET Core based on libuv, a cross-platform asynchronous I/O library;
一、Kesterl 基本工作原理
Kestrel 是进程内服务器,以一个包形式提供,自身不能单独运行,与 IIS 不同,它必须 HOST 在一个 .NET 的 WEB 应用程序中。
它内部封装了对 libuv 的调用,但不是 libuv 库简单的封装库。Kestrel 是个精简的,高效的 Http Server。
(粗暴流程图)
(基础架构图)
libuv:
作为I/O底层,屏蔽各系统底层实现差异,为windows下,通过IOCP实现异步;linux下通过epoll实现异步。提供一个主程序和主循环。
I/O 事件队列:
对应Libuv的工作队列,为了利用现代服务器的多核处理器,适当的队列数量将提高更大的I/O吞吐能力。
Kestrel默认为每两个CPU核心设置一个I/O事件队列,但至少有一个I/O事件队列。每个队列对应一个托管线程,该线程不属于线程池。
用户可以设置队列个数,通过设置KestrelServerOptions.ThreadCount即可,最多设置 16个。
Kestrel线程:
事件队列对应的托管线程,主要控制读取事件的循环机制:每次事件循环处理8个事件,然后等待下一次循环。
非托管内存池:
这是在 .NET 运行环境分配的非托管内存池,申请的比较大块的堆内存,仅在首次请求或者池剩余空间不足时分配,
后续请求可以复用,不受GC管理。管理内存页的数据结构采用链表方式。以获取大块连续空间的方式增长。遵循读完后立即释放的处理原则。
(结构图)
二、Kesterl 的使用、配置
前面说过了,Kesterl 是进程内服务器,默认情况下在 Core 项目中由 Program.cs 启动;
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}public static IWebHost BuildWebHost(string[] args) =>WebHost.CreateDefaultBuilder(args)
.UseStartup()
.UseKestrel(options=>{
options.Listen(IPAddress.Loopback,5000);
options.Listen(IPAddress.Loopback,5001, listenOptions =>{
listenOptions.UseHttps("testCert.pfx", "testPassword");
});
})
.Build();
配置客户端最大连接、请求大小等信息
.UseKestrel(options =>{
options.Limits.MaxConcurrentConnections= 100;
options.Limits.MaxConcurrentUpgradedConnections= 100;
options.Limits.MaxRequestBodySize= 10 * 1024;
options.Limits.MinRequestBodyDataRate=
new MinDataRate(bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));
options.Limits.MinResponseDataRate=
new MinDataRate(bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));
options.Listen(IPAddress.Loopback,5000);
options.Listen(IPAddress.Loopback,5001, listenOptions =>{
listenOptions.UseHttps("testCert.pfx", "testPassword");
});
})
参考:
学习笔记参考自:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x#tabpanel_N8uGZe26A-_aspnetcore1x
http://www.cnblogs.com/vipyoumay/p/7525478.html
kestrel java_Kestrel Web 服务器学习笔记相关推荐
- Windows2003搭建web服务器(学习笔记)
Windows2003搭建web服务器 第一步:IIS安装 开始->控制面板->添加或删除程序->添加/删除windows组件. 勾选应用程序服务器并双击打开->然后选择Int ...
- python web服务器学习笔记(五) 并发尝试之popen原理探究
使用popen新开进程能实现并发吗?像这样的cgi处理程序 def run_cgi(self,handler):cmd = "python" +handler.full_pathc ...
- Java web与web gis学习笔记(二)——百度地图API调用
系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...
- Web Components 学习笔记一: Web Components是什么?解决了什么问题?
公众号:妙蛙种子前端 文章原文地址:Web Components笔记一: Web Components是什么?解决了什么问题? | 妙蛙种子 - 记录WEB前端技术学习成长过程的博客 Web Comp ...
- web安全学习笔记--sql语句(sql注入基础上)
一.基础知和表内操作语法 1.sql语句对大小写不敏感!!! SELECT - 从数据库表中获取数据:select * from (columns/tables/databases); UPDATE ...
- web前端学习笔记(最新)
web前端学习笔记 大家好,我是链表哥,新的学期,新的学习,我会为您展示我的学习进程. 一:什么是WEB前端? 所谓的Web前端指的是用户所能接触到的,并服务于用户的前沿端口,经我们程序员编辑修饰后展 ...
- web安全学习笔记--基础入门
一.名词 1.DNS(域名系统):将域名和IP地址相互映射的一个分布式数据库,便于用户访问:UDP/TCP端口为53,利用cmd中ping命令可以查看域名所对应的ip号 2.CDN(内容分发网络):将 ...
- Web Service学习笔记
Web Service概述 Web Service的定义 W3C组织对其的定义例如以下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的A ...
- MySQL服务器学习笔记!(二) ——数据库各项操作
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://foreveryan.blog.51cto.com/3508502/657640 ...
最新文章
- adt eclipse java1.8,android java开发 第一天 之熟习eclipse adt
- f分布表完整图_【教育统计答疑】如何理解正态分布、均值分布、^2分布、t分布和F分布...
- matlab中now函数_now()方法以及JavaScript中的示例
- xcode w情ndows版,xcode Windows版安装使用介绍
- 配置环境JDK Tomcat Maven
- 计算机组成原理中dubs是什么意思,计算机组成原理》课程设计报告.docx
- 关于 WebRequest.RegisterPrefix
- php使用referer,PHP利用REFERER根居访问来地址进行页面跳转
- 黑苹果efi文件_台式机华硕主板黑苹果EFI引导文件分享amp;2020.12.2
- Java项目--网页版音乐播放器(Spring Boot 后端逻辑)
- matlab车牌识别课程设计报告模板(附源代码)
- 软件工程人才的社会需求现状与发展趋势分析
- Matlab中如何清除persistent 变量
- Cell子刊:北大姜长涛组发现HIF-2α通过肠道菌群调控脂肪产热
- 发送RST报文的几种可能的情况
- 电商企业营销案例方案:2019年618大促用红包推广引流
- c# Dispose实现 MSDN官方教程
- Java生态浩如烟海
- GPS网检验重复边和同步环是否合格
- [转]IText导出word之页眉页脚页码
热门文章
- lcd屏和amoled屏哪个护眼呢 lcd屏和amoled屏哪个更耗电
- Xiaojie雷达之路---MATLAB仿真---给信号添加高斯白噪声
- 苹果手机语音备忘录在哪_苹果手机删除的备忘录怎样找回?方法简单,3秒学会!赶紧来看...
- 编译安装zabbix时遇到configure: error: no acceptable C compiler found in $PATH 问题解决
- 电商网站业务流程图示例
- 台式您想使用系统还原计算机吗,系统还原功能已关闭。如果继续安装,将不能使用系统还原随您的计算机运行的Windows操作系统提供的Windows - Microsoft Community...
- 机器学习稀疏之L0正则化
- k8s探针检测php,K8S教程(7)使用探针对容器进行健康检查
- 氟改性UiO-66|3,4-二羟基苯甲醛改性UiO-66-NH2|喜树碱衍生物/寡肽@ZIF-8纳米载药体系
- Linux 库打桩机制