当前位置: 首页 > 软件库 > 服务器软件 > HTTP服务器 >

Lwan

高性能 Web 服务器
授权协议 未知
开发语言 C/C++
所属分类 服务器软件、 HTTP服务器
软件类型 开源软件
地区 不详
投 递 者 耿和韵
操作系统 Linux
开源组织
适用人群 未知
 软件概览

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;}
  • LAN 是局域网, WAN 是广域网,LWAN是无线局域网.  1.局域网 ( LAN——Local Area Network )  局域网是指在较小的地理范围内,将两台以上的计算机通过传输电缆连接起来,实现资源共享。局域网的传输速度通常在10Mb/s~1000Mb/s之间,主干1000Mb/s、桌面100Mb/s是目前的主流技术。局域网的设计通常是针对于一座建筑物内,提高资源和信息的安全性,用于

  • Since last release: in the src directory alone, there were 83 files changed, 6225 lines added, 4343 lines removed. Code has gotten clearer, safer (thanks @ossfuzz!), and more efficient all around. Of

 相关资料
  • imi v1.0.13 版本新增了一个 Swoole\Coroutine\Http\Server 实现的协程服务器。需要 Swoole 4.4+ 才可使用该特性。 该特性是可选的,不影响以前使用的服务器模式。 使用协程服务器特性,依靠 Linux 系统的端口重用机制,系统级的负载均衡,可以让你的多进程 Http 服务处理请求的能力得到提升。 使用 ab,本机->虚拟机(双核+2进程)压测Hello

  • 本文向大家介绍单台web服务器如何尽可能的提高网站性能,包括了单台web服务器如何尽可能的提高网站性能的使用技巧和注意事项,需要的朋友参考一下 我觉得首先要选择一个合适的环境,对于大多数php站点来说,运行在lnmp(linux+nginx+mysql+php)环境下是个理想的选择. 首先一点linux对比win的优势我就不说了。 其次nginx的优势总结起来就是负载均衡,高并发性能优异。 这里p

  • 我正在开发web套接字应用程序。从前端来看,每个应用程序都有一个插座。但我不确定后端。我们将Python和nginx与Flask socketIO和socket io客户端库一起使用。此体系结构将用于通知前端发生了更改,并应更新数据。 以下是我的疑问-服务器上将创建多少套接字和线程?不同连接之间是否可以共享套接字?是否有任何工具可以分析插座是否打开?

  • Swoole框架提供的WebServer有3种使用方法 一、直接使用HttpServer HttpServer支持静态文件和include file。业务代码不需要写任何Server的代码,只需要设置document_root,并编写对应php文件。这种使用方法与Apache/Nginx+FPM类似。 server.php $AppSvr = new Swoole\Network\Protocol

  • 本文向大家介绍Nginx服务器高性能优化的配置方法小结,包括了Nginx服务器高性能优化的配置方法小结的使用技巧和注意事项,需要的朋友参考一下 通常来说,一个优化良好的 Nginx Linux 服务器可以达到 500,000 – 600,000 次/秒 的请求处理性能,然而我的 Nginx 服务器可以稳定地达到 904,000 次/秒 的处理性能,并且我以此高负载测试超过 12 小时,服务器工作稳