前一天使用pmap查看服务器中自己开发的游戏服务的内存使用情况,发现其中数据存储服务的内存占用率非常高,截图如下。

  

  从截图中可以看出来,分配了大量的64MB左右的内存空间,因为对自己的服务比较了解,知道不可能是自己程序开辟的,而且进程才刚刚启动,也不可能是内存泄露。

  所以第一时间想到的是我的服务是多线程并发的,而且开辟的不知名的内存块的数量和线程数也比较吻合,将线程数减少,发现内存也就跟着减少,基本可以肯定是线程导致的。

  但是线程为什么会导致这么多内存块的使用,google一下,有一篇文章写得和我的情况非常类似。http://chou.it/tag/pmap/

  可能是glibc的线程内存分配的问题,建议使用tcmalloc。

  于是从网上下载了gperftools-2.1-28.2.x86_64.rpm,和libunwind-1.1-94.3.x86_64.rpm, unwind是gperftools依赖的一个库,所以需要一起下。

  gperftools是google开发的一套开源工具,其中包含tcmalloc。

  然后在程序链接的时候,将tcmalloc加入进去之后,我使用的是cmake方式编译,就是添加一行TARGET_LINK_LIBRARIES(xxx tcmalloc),如果用makefile就是-ltcmalloc即可

  重新编译,然后运行程序之后,重新使用pmap查看内存使用情况,发现内存使用回归到合理的状态。

  

linux服务器并发与tcmalloc的更多相关文章

  1. 修改Linux内核参数提高Nginx服务器并发性能

    当linux下Nginx达到并发数很高,TCP TIME_WAIT套接字数量经常达到两.三万,这样服务器很容易被拖死.事实上,我们可以简单的通过修改Linux内核参数,可以减少Nginx服务器 的TI ...

  2. Linux(Centos )的网络内核参数优化来提高服务器并发处理能力【转】

    简介 提高服务器性能有很多方法,比如划分图片服务器,主从数据库服务器,和网站服务器在服务器.但是硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力,是很多运维技术人员思考的问题 ...

  3. [记录]优化Linux 的内核参数来提高服务器并发处理能力

    优化Linux 的内核参数来提高服务器并发处理能力PS:在服务器硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力,是很多运维技术人员思考的问题.要提高Linux 系统下的负载 ...

  4. Linux服务器程序--大数据量高并发系统设计

         在Linux服务器程序中,让系统能够提供以更少的资源提供更多的并发和响应效率决定了程序设计价值!怎样去实现这个目标,它其实是这么多年以来一直追逐的东西.最开始写代码时候,省去一个条件语句.用 ...

  5. linux服务器分析优化

    转:http://jiekeyang.blog.51cto.com/11144634/1774473 一.系统性能分析 1.系统的性能是指操作系统完成任务的有效性.稳定性和响应速度.操作系统完成任务与 ...

  6. linux服务器性能优化

    1.这里的吞吐率特指Web服务器单位时间内处理的请求.       2.压力测试的前提:1>并发用户数 2>总请求数 3>请求资源描述       3.用户平均请求等待时间主要用户衡 ...

  7. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  8. 高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化

    高性能Linux服务器 第10章    基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等 ...

  9. Linux服务器集群系统(二)--转

    引用地址:http://www.linuxvirtualserver.org/zh/lvs2.html LVS集群的体系结构 章文嵩 (wensong@linux-vs.org) 2002 年 4 月 ...

随机推荐

  1. maven的安装与使用

    一.Maven是什么 Maven是一个采用纯Java编写的开 源项目管理工具.Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义 ...

  2. Eclipse中SVN的安装步骤(两种)和使用方法 [转]

    一.给Eclipse安装SVN,最常见的有两种方式:手动方式和使用安装向导方式.具体步骤如下: 方式一:手动安装 1.从官网下载site-1.6.9.zip文件,网址是:subclipse.tigri ...

  3. 经典DP 二维换一维

    HDU 1024  Max Sum Plus Plus // dp[i][j] = max(dp[i][j-1], dp[i-1][t]) + num[j] // pre[j-1] 存放dp[i-1] ...

  4. 搜索功能demo

    代码如下: <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=edg ...

  5. ubuntu14.10服务器版安装xampp,配置域名端口访问

    1.从xampp下载下了xampp-linux-1.7.3a.tar这个包,然后ftp到我的linux虚拟机中, 2.复制到opt下,(可以直接解压的)到opt下面,tar xvfz xampp-li ...

  6. 对于服务器的识别的条件,header之类的使用

    根据上一节的内容的衔接 一:urllib.request的使用 headers的一些属性 User-Agent : 有些服务器或 Proxy 会通过该值来判断是否是浏览器发出的请求Content-Ty ...

  7. HDU 1394 树状数组求逆序对

    Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  8. ros科大讯飞语音识别环境配置

    以在线命令词识别为例: 链接:http://www.xfyun.cn/sdk/dispatcher 1.下载SDK,解压: 2.在ROS工作空间下创建一个Package: catkin_create_ ...

  9. 第46套题【STL】【贪心】【递推】【BFS 图】

    已经有四套题没有写博客了.今天改的比较快,就有时间写.今天这套题是用的图片的形式,传上来不好看,就自己描述吧. 第一题:单词分类 题目大意:有n个单词(n<=10000),如果两个单词中每个字母 ...

  10. 解决VS2010控制台程序运行结束不显示请按任意键继续

    在VS2010里的控制台应用程序在运行时,结果画面一闪而过,不管是用F5 还是用Ctrl + F5都是一样,导致无法看到结果. 网上有不少的办法,说是都是在程序最后加一个要程序暂停的语句( syste ...