TinyWebserver
文章平均质量分 91
落叶随峰
菜鸡大学生一枚,感兴趣方向:C++,嵌入式,PCB设计,目标检测,视频语义分割等。
展开
-
TinyWebserver的复现与改进(7):日志系统
日志类包括但不限于如下方法,公有的实例获取方法初始化日志文件方法异步日志写入方法,内部调用私有异步方法内容格式化方法刷新缓冲区class Logpublic:// 返回log对象的指针/*instance只能初始化一次,所以即便调用 get_instance() 函数多次,代码static Log instance;只执行一次,即 instance 的地址不会被改变*/private:// log文件名// 路径名FILE *m_fp;原创 2024-09-11 18:43:25 · 685 阅读 · 0 评论 -
webserver使用webbench工具连续压测失败
使用Webbench对服务器进行压力测试,创建1000个客户端,并发访问服务器10s。结果显示仅有少数几个请求被成功处理,0个请求处理失败,性能很差,服务器也没有返回错误。此时,从浏览器端访问服务器,发现该请求也不能被处理和响应,必须将服务器重启后,浏览器端才能访问正常。原创 2024-08-26 17:34:44 · 443 阅读 · 0 评论 -
TinyWebserver的复现与改进(6):定时器处理非活动连接
如果客户端长时间没有动作,会占用了许多连接资源,严重影响服务器的性能。因此需要通过实现一个服务器定时器,处理这种非活跃连接,释放连接资源。原创 2024-08-17 17:32:37 · 666 阅读 · 0 评论 -
TinyWebserver的复现与改进(5):HTTP报文的解析与响应
HTTP 协议是基于 TCP/IP 协议之上的应用层协议,基于 请求-响应 的模式。HTTP 协议规定,请求从客 户端发出,最后服务器端响应该请求并返回。换句话说,肯定是先从客户端开始建立通信的,服务器端 在没有接收到请求之前不会发送响应。原创 2024-08-14 17:26:29 · 848 阅读 · 0 评论 -
TinyWebserver的复现与改进(4):主线程的具体实现
今天我们将采用主从Reactor多线程模式,这是是大多数高性能服务器采用的模式主从Reactor多线程模式要求主线程(I/O处理单元)只需负责:1. 监听文件描述符上是否有事件发生,2. 有的话就立即将该事件通知工作线程(逻辑单元),3. 将 socket 可读可写事件放入请求队列,交给工作线程处理。除此之外,主线程不做任何其他实质性的工作。读写数据,接受新的连接,以及处理客户请求均在工作线程中完成。原创 2024-08-12 20:44:29 · 1056 阅读 · 0 评论 -
TinyWebserver的复现与改进(3):线程同步机制类封装及线程池实现
线程池有许多种实现方法,最容易想到的一种是每有一个新任务、就开一个新线程执行。这种方式最大的缺点是线程数不固定,试想如果在某一时刻有1000个并发请求,那么就需要开1000个线程,如果CPU只有8核或16核,物理上不能支持这么高的并发,那么线程切换会耗费大量的资源。为了避免服务器负载不稳定,这里采用了固定线程数的方法,即启动固定数量的工作线程,一般是CPU核数(物理支持的最大并发数),然后将任务添加到请求队列,工作线程不断主动取出请求队列的任务执行。原创 2024-08-11 13:02:44 · 793 阅读 · 0 评论 -
TinyWebserver的复现与改进(2):项目的整体框架
本文介绍了项目的总体框架,理清了工作顺序,下一步将会按照这个顺序梳理代码。原创 2024-08-10 21:11:14 · 930 阅读 · 0 评论 -
TinyWebserver的复现与改进(1):服务器环境的搭建与测试
通过项⽬作者的指示,我们终于把项⽬跑起来了,然后就可以对作者的项⽬进⾏功能测试了。原创 2024-08-09 22:58:09 · 481 阅读 · 0 评论