杂项

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

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

线程池

多线程化核心依赖。

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

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

实际上,mongols所提供的所有服务器在单线程情况下都会有更好的性能表现。因此,mongols在version-1.3.4之后,对多线程机制的使用做了调整,仅当需要将消息在各个连接之间转发时,才把相关任务作为后台任务由线程池执行。

线程安全队列

它是线程池的一个依赖。

RE2

正则表达式处理。

zlib

解、压缩处理。

jsoncpp

已经用到ws_server中。还有个json11,看喜欢哪个吧,都能用。我更喜欢jsoncpp。

fmt

字符串格式化。

msgpack

序列化。

http-parser

http 协议处理

simple_resp

RESP协议处理

util

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

性能优化建议

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

原文: https://mongols.hi-nginx.com/doc/others.html