1,单个请求时,耗时比较少4ms,并发量上来时,耗时15ms左右;
-- gcc 编译时,使用-O2的选项;
2,在1的基础上,高并发时,耗时变为8ms左右;
-- 将代码中对象拷贝的地方改为指针拷贝;
3,在2的基础啊上,高并发时,耗时变为5ms左右,qps只能达到2000;
-- 将gcc 的 -pg 选项删除掉;
4,在3的基础上,高并发时,耗时变为3ms左右,但是qps 达到3100时,超时率变高,
根据返回数据长度比较大的特点,查看了一下网卡(iftop -B)情况,达到带宽最大值;
-- 下一步使用protobuf或者先压缩,再发送;
c++ 如何解决高并发问题?
线程池+多路io的模式。多路io可以用epoll 或者某些 unix的kqueue。 也可以用libuv或者libevent这些封装过的消息循环框架。