Lwan —— 每秒处理32万请求的高性能Web服务器

Lwan 是一个高性能和可伸缩的 Web 服务器软件,支持 glibc/Linux 平台。

Lwan 开发了将近 3 年时间,目前还是个人研究的成果。主要是为了构建一个坚固、轻量级高性能的 Web 服务器。

特点:

占用内存低 (1万个空闲连接只占用 ~500KiB)

最小化的内存分配和拷贝

最小化的系统调用

精确的 HTTP 请求解析

使用最高效的方法来处理文件服务

大于 16k 的文件不需要进行核心和用户层的拷贝

更小的文件使用内存映射缓冲向量 I/O 发送

处理压缩小文件时考虑Header 开销

大多数无等待、多线程设计

核心代码只有 7200 行左右

性能:

在一台使用 i7 处理器的笔记本上可以达到每秒 32 万无磁盘访问的 HTTP 请求。当访问磁盘,测试文件在 16Kb 时可达到每秒 29 万个请求;而更大的文件可到每秒 18.5 万请求。以上测试使用 keep-alive 连接,如果不使用 keep-alive 这个数字可能降低 6 倍左右。

下图是不同并发连接数测试的每秒请求数:

其中绿线是使用如下示例代码的 Hello world 扩展应用,棕色线是 100 字节的文件。

此外 Lwan 也提供 API 扩展,示例代码:

#include "lwan.h"static lwan_http_status_thello_world(lwan_request_t *request,
            lwan_response_t *response, void *data){
    static const char message[] = "Hello, World!";

    response->mime_type = "text/plain";
    strbuf_set_static(response->buffer, message, sizeof(message) - 1);

    return HTTP_OK;}intmain(void){
    const lwan_url_map_t default_map[] = {
        { .prefix = "/", .callback = hello_world },
        { .prefix = NULL }
    };
    lwan_t l;

    lwan_init(&l);
    lwan_set_url_map(&l, default_map);
    lwan_main_loop(&l);
    lwan_shutdown(&l);

    return 0;}

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-10-24 23:09:30

Lwan —— 每秒处理32万请求的高性能Web服务器的相关文章

web服务器-应用服务器发出的请求是通过WEB服务器还是自己直接向外请求

问题描述 应用服务器发出的请求是通过WEB服务器还是自己直接向外请求 最近在做一个系统跟携程的接口,在系统中可以跳转到携程进行订票并或者订票信息. 其中有两个步骤 1.登录:系统应用服务器向携程请求一个令牌,获取到令牌后再根据携程分配的 用户名密码登录系统. 2.订票完成后,可以根据订单号,从携程获取机票的订票信息. 现在系统的部署是:客户端(有外部网权限) -> WEB服务器(Apache,有外部网权限) -> 应用服务器(jboss无外部网权限) 本地测试都没有问题,但是部署到服务器后,在

微软拒绝修复60万台 Windows 2003 Web服务器安全漏洞

启用了WebDAV的 Windows Server 2003 机器遭遇安全漏洞影响 接入互联网的约60万台 Windows Server 2003 机器上存在 IIS 6.0 重大安全漏洞. 然而,微软发话称,不会发布补丁供用户防护该零日缓冲区溢出漏洞.相关技术报道参见:CVE-2017-7269 ( https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7269 ). 该漏洞存在于微软Web服务器 IIS 6.0 的网页分布式创作与版本

每秒处理10万订单的支付架构 乐视集团

作者:梁阳鹤,乐视网boss平台技术部架构师,主要负责乐视集团支付,乐视会员系统,商业运营平台等系统架构工作.开源数据访问层框架mango作者. 责编:钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@csdn.net,另有「CSDN 高级架构师群」,内有诸多知名互联网公司的大牛架构师,欢迎架构师加微信qshuguang2008申请入群,备注姓名+公司+职位. 稿件:309933706@qq.com  随着乐视硬件抢购的不断升级,乐视集团支付面临的请求压力百倍乃至千倍的暴增.作

写一个每秒接收 100 万数据包的程序究竟有多难?

在上周的一次非正式谈话中,我偶然听同事说:"Linux 的网络栈太慢了!你别指望每秒在每个核上传输超过 5 万的数据包". 这让我陷入了沉思,虽然对于任意的实际应用来说,每个核 5 万的速率可能是极限了,但 Linux 的网络栈究竟可能达到多少呢?我们换一种更有趣的方式来问: 在 Linux 上,编写一个每秒接收 100 万 UDP 数据包的程序究竟有多难? 我希望,通过对这个问题的解答,我们将获得关于如何设计现代网络栈很好的一课. 首先,我们假设: 测量每秒的数据包(pps)比测量每

【Movidius发布最新一代VPU】集成DNN加速器,每秒超过1万亿次运算

英特尔周一宣布推出其新一代Movidius视觉处理单元(VPU),可为边缘设备(如无人机,VR耳机,智能相机,可穿戴设备和机器人)提供更好的处理能力. Movidius是芯片巨头英特尔的子公司,专注开发视觉芯片,为机器和PC增强视觉功能.Movidius最新的这款VPU是Myriad X系统级芯片,配备了专门的神经计算引擎,能够支持边缘设备的深度学习推理(inferences). Myriad X专为高速和低功耗运行深度神经网络而设计.英特尔方面表示,这款深度神经网络加速器可以让DNN推理实现每

平台终端吞吐量每秒达到2万设备,每秒插入2万条数据技术方案

问题描述 平台终端吞吐量每秒达到2万设备,每秒插入2万条数据技术方案 5C 目前由于平台要处理2万设备,每秒能处理2万条数据,之前使用ActiveMQ,不能达到需求了,之前测试rabbitMQ,Redis 之类,在测试机子上面都不能达到需求,本地测试 模拟1000个线程并发处理,一个线程处理1000插入数据,始终未能达到!不知道大家有没什么好的解决方案能达到这种需求的? 解决方案 单机很难达到这样的吞吐量,需要使用负载平衡了. 解决方案二: 同多台机器分布式处理吧. 解决方案三: hadoop等

CYQ.Data 批量添加数据性能测试(每秒千、万)

今天有网友火晋地同学进了CYQ.Data官方群了,他正在折腾了一个各大ORM性能测试的比较的软件,如下图 折腾的种类也不少:   感觉这软件折腾的不错~~~值的期待~~~ 另外,他指出CYQ.Data 在他的软件里表现不佳~~~~ 所以我要了他的测试实例看看是怎么写的测试代码: 测试的过程,大体是开了N个线程,循环N次执行这样的函数. 找到表现不佳的原因,并解决: 中间纷纷绕绕的讲了一些各大ORM测试的实例编写不同问题,不过有一句,倒引起了我的注意,说平均400毫秒左右. 于是我本地测试了一下,

[聚能聊精彩回顾]每秒17.5万笔交易量,需要怎样的数据库技术支撑

话题发起人:德哥 PG社区校长,阿里云数据库专家 今年的双十一1,207亿的交易总额,开场订单交易的创建达每秒17.5万笔,支付每秒12万笔 ,又创新高.在这些庞大的数据背后的IT系统是如何支撑的呢? 我们且先聊聊数据库在这里的技术升级吧. 我抛砖引玉一下,发了4篇相关技术文章 <聊一聊双十一背后的技术 - 物流, 动态路径规划> <聊一聊双十一背后的技术 - 强奸式秒杀技术实现> <基于 阿里云 RDS PostgreSQL 打造实时用户画像推荐系统> <Pos

大学生Myspace上吹牛露富 招来32万美元税单

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 北京时间9月22日消息:据国外媒体报道,美国几个业余时间"捞外快"的大学生因为在Myspace上吹牛露富,结果招来了32万美元的巨额税单. 据美国媒体报道,俄克拉荷马州的大学生巴罗伊等人在业余时间开办了一个举办派对服务的小公司. 为了吸引他人注意,他们在Myspace的网页上吹嘘,已经举办过几千次派对,服务了"十