压力测试中, zlog级别设置比较低, log输出比较多, 已经很明显的造成cpu占用率上升; 同时写磁盘居多,io高, 导致load升高。
基本功能性问题排除后, 压力时,将log级别调高。
另外, 自己实现的memory pool, 发现比较影响性能, 连简单的new/delete都比不上, 为什么?
memory pool 实现分配好几种固定大小的内存块; 需要时从中获取,用完归还。 使用pthread_mutex_lock 做进程内的多线程互斥。
后来在压力测试过程中, 发现不使用memory pool时吞吐量反而上去了一些
直接使用new/delete 也没有发现内存碎片问题, 性能上也还行; 实在觉得必要, 可以使用tcmalloc.
使用tcmalloc的方法:
最后一个-ltcmalloc
tcmalloc 检查内存泄露
env HEAPCHECK=normal ./program ../config.xml
valgrind --leak-check=full ./program ../config.xml
测试中发现某些时候内存激增, 但是前后端模块的cpu都比较低, 原来是压力程序的请求都在模块中堆积,导致内存上涨。
为什么前后端模块cpu都比较低, 请求仍然在队列中排队呢?