其他

优质
小牛编辑
130浏览
2023-12-01

mongols主要是网络库,其他一切设施均直接或间接为此而存在。

使用是pkg-config --libs --cflags mongols openssl 即可。

线程池

多线程化核心依赖。

不要迷信多线程;对真正高性能的服务器来说,使用多线程的结果通常就是将并发性能打8折——线程越多,打折越多; 多线程的合适场景是后台多任务而非提高并发吞吐率。

这也是为什么libevent、libev、nodejs、nginx、redis等项目只使用单线程的真正原因。如果多线程在提供并发吞吐率方面是有效的,那么你很难解释以上项目的作者为什么不使用多线程。

实际上,mongols所提供的所有服务器在单线程情况下都会有更好的性能表现。因此,mongols在version-1.3.4之后,对多线程机制的使用做了调整,仅当需要将消息在各个连接之间转发时,才把相关任务作为后台任务由线程池执行。也就是说,除了ws_server,其他服务器在构造时,都应该将设置线程数的第五个参数设置为0。

线程安全队列

它是线程池的一个依赖。

fmt

字符串格式化。

jsoncons

序列化。

http-parser

http 协议处理

simple_resp

RESP协议处理

util

满足一些零碎而必要的需求。

性能优化建议

开启缓存:set_enable_cacheset_enable_lru_cache。这个不是一般有效,是非常有效。