用go实现了一个数据库访问的代理,即客户端发数据到proxy proxy转发至后端数据库并将数据返回给客户端,项目使用的go net包;
pprof分析cpu耗时,发现syscall (28%)和epollwait(50%)占比相当高,syscall主要是net的read和write耗时,已经优化合并了部分读写操作,epollwait高的吓人,请大神帮助分析下,感激不尽
![4069.png](https://static.golangjob.cn/221118/1856f1ef5ac4a76cff83e64d99e67269.png)
又做了测试, 数据链路 client --> proxy,然后proxy mock数据返回client,QPS能达到近110W;
然后增加一个 proxy到数据库的写(读还没增加),其他不变,QPS下降近一半 只有50多W;
nginx转发效率就很高,按道理数据链路应该差不多,怎么做到损耗这么小的?
#7
更多评论
![image.png](https://static.golangjob.cn/221121/a2d9dc67c22104138ef82a2a681acbe6.png)
#1