03 2023 档案
摘要:8. 压力测试 至此,这个项目就已经完成了,但一个服务器项目,你在本地浏览器键入localhost:9009发现可以运行无异常还不够,你需要对他进行压测(即服务器并发量测试),压测过了,才说明你的服务器比较稳定了。 这里使用了Webbench软件来进行测试(项目里已经包含此软件),在 webbenc
阅读全文
摘要:7. 注册登入 上一节弄清楚了数据库连接池的概念及实现方式后,我们继续回到 http 类部分,学习对用户的登录及注册等POST请求,服务器是如何做校验的。 当点击新用户按钮时,服务器对这个POST请求的响应是:返回用户一个登录界面;当你在用户名和密码框中输入后,你的POST请求报文中会连同你的用户名
阅读全文
摘要:6. 使用数据库连接池 前面我们使用了线程池来避免了在处理短时间任务时创建与销毁线程的代价,保证内核的充分利用。同样的,若系统需要频繁访问数据库,则需要频繁创建和断开数据库连接,而创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。 采用数据库连接池,在程序初始化的时候,集中创建多个数据库
阅读全文
摘要:5. 使用日志系统 日志,由服务器自动创建,并记录运行状态,错误信息,访问数据的文件。 基础知识 同步日志,日志写入函数与工作线程串行执行,由于涉及到I/O操作,当单条日志比较大的时候,同步模式会阻塞整个处理流程,服务器所能处理的并发能力将有所下降,尤其是在峰值的时候,写日志可能成为系统的瓶颈。 异
阅读全文
摘要:4.使用定时器 服务器程序通常管理着众多定时事件,因此有效地组织这些定时事件,使之能在预期的时间点被触发且不影响服务器的主要逻辑,对于服务器的性能至关重要。为此,要将每个定时事件封装成定时器,并使用某种容器类数据结构,如链表、排序链表和时间轮等,将所有定时器串联起来,以实现对事件的统一管理。 代码块
阅读全文