linux应用程序之服务器优化
bingqingsuimeng
这个作者很懒,什么都没留下…
展开
-
频繁分配释放内存导致的性能问题的分析
现象1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0,而minflt每秒增量大于10000。初步分析majflt代表major fault,中文名叫大错误,minflt代表minor fa转载 2013-02-18 09:24:48 · 632 阅读 · 0 评论 -
高性能服务器架构
本文将与你分享我多年来在服务器开发方面的一些经验。对于这里所说的服务器,更精确的定义应该是每秒处理大量离散消息或者请求的服务程序,网络服务器更符合这种情况,但并非所有的网络程序都是严格意义上的服务器。使用“高性能请求处理程序”是一个很糟糕的标题,为了叙述起来简单,下面将简称为“服务器”。 本文不会涉及到多任务应用程序,在单个程序里同时处理多个任务现在已经很常见。比如你的浏览器可能转载 2014-08-06 09:09:06 · 981 阅读 · 0 评论 -
EPIPE和ECONNRESET
EPIPE和ECONNRESETpage1:假设Server A上面有Process X,它有一个socket M,和另外的Server B上面的Process Y的 Socket N以TCP协议连接上了,那么,据我所知,有2种情况会出现RST包:(1)X没有close socket就退出了,然后Y继续向M send数据,A的内核就会发送RST 到 socket N;(2)X设转载 2016-07-26 14:37:43 · 2568 阅读 · 0 评论 -
ubuntu速度慢的原因之内存和swap分区
ubuntu速度慢的原因之内存和swap分区 我在日常使用ubuntu时,经常要同时打开10几个窗口和应用,有时候就会发生速度变得很慢的情况,甚至系统明显反应迟钝,这时一般是物理内存不够用,系统开始用换硬盘上的swap分区做虚拟内存,其速度可想而知。 在ubuntu里面往往不是物理内存全部耗尽采取使用swap分区,swappiness的值的大小对如何使用swap分区是有着很大的联系转载 2016-07-26 14:44:35 · 5079 阅读 · 0 评论 -
(总结)关于Linux的缓存内存 Cache Memory详解
前天有朋友问我,为啥我的Linux系统没运行多少程序,显示的可用内存这么少?其实Linux与Win的内存管理不同,会尽量缓存内存以提高读写性能,通常叫做Cache Memory。有时候你会发现没有什么程序在运行,但是使用top或free命令看到可用内存free项会很少,此时查看系统的 /proc/meminfo 文件,会发现有一项 Cached Memory:输入cat /pr转载 2016-07-27 13:27:29 · 16004 阅读 · 2 评论 -
Linux是这样泄露内存的:Linux内存泄露过程观察
今天写了一个内存泄露程序,观察系统内存的变化情况。测试环境为:root@app-node-v-o:/home/test# cat /etc/issueUbuntu 12.04 LTS \n \l一、内存泄露代码代码如下:MemoryLeak.h#ifndef MEMORYLEAK_H#define MEMORYLEAK_H转载 2016-07-08 10:14:45 · 1988 阅读 · 0 评论 -
linux中内存使用,swap,cache,buffer的含义总结
首先介绍一下linux中内存是如何使用的。当有应用需要读写磁盘数据时,由系统把相关数据从磁盘读取到内存,如果物理内存不够,则把内存中的部分数据导入到磁盘,从而把磁盘的部分空间当作虚拟内存来使用,也称为Swap。如果给所有应用分配足够内存后,物理内存还有剩余,linux会尽量再利用这些空闲内存,以提高整体I/O效率,其方法是把这部分剩余内存再划分为cache及buffer两部分加以利用。从磁转载 2016-07-08 10:33:05 · 15171 阅读 · 2 评论 -
Buffer cache和page cache的区别
Page cache和buffer cache到底有什么区别呢?很多时候我们不知道系统在做IO操作的时候到底是走了page cache还是buffer cache?其实,buffer cache和page cache是Linux中两个比较简单的概念,在此对其总结说明。Page cache是vfs文件系统层的cache,例如 对于一个ext3文件系统而言,每个文件都会有一棵radix树管理文件转载 2016-08-01 11:22:39 · 572 阅读 · 0 评论 -
Linux中状态为D 或Z 的进程
长期生活在 Linux 环境里,渐渐地就有一种环保意识油然而生。比如,我们会在登录提示里写上“悟空,我跟你说过叫你不要乱扔东西,乱扔东西是不对的。哎呀我话没说完你怎么把棍子扔掉了?月光宝盒是宝物,乱扔它会污染环境,要是砸到小朋友怎么办?就算砸不到小朋友,砸到了花花草草也不好嘛...”;在用户缺省目录里放一个题为 “自觉保护环境 请勿堆放垃圾”的空文件,并用 chattr +i 设为不可修改;看到垃转载 2016-08-01 11:23:11 · 1128 阅读 · 0 评论 -
内存耗用:VSS/RSS/PSS/USS
TermsVSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)一般来说内存占用大小有转载 2016-08-01 11:23:35 · 660 阅读 · 0 评论 -
Cgroup - Linux 内存资源管理
Hi ,我是 Zorro 。这是我的微博地址,我会不定期在这里更新文章,如果你有兴趣,可以来关注我呦。另外,我的其他联系方式:Email: mini.jerry@gmail.comQQ: 30007147本文PDF在聊 cgroup 的内存限制之前,我们有必要先来讲解一下:Linux 内存管理基础知识free 命令无论从任何角度看, Linux 的内存管理都是一转载 2016-08-01 11:24:18 · 5521 阅读 · 0 评论 -
Linux内存中的Cache真的能被回收么?
在Linux系统中,我们经常用free命令来查看系统内存的使用状态。在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态:[root@tencent64 ~]# free total used free shared buffers cachedMem: 132256952 72571772转载 2016-08-01 11:38:07 · 2699 阅读 · 0 评论 -
嵌入式设备支持https
1.appweb-src-2.4.2-2.tar.gz2. openssl-1.0.1i.tar.gz一、一般编译(没有ssl支持)1.配置如下:[root@localhost appweb-src-2.4.2]# CC_FOR_BUILD=gcc CC=arm-linux-gcc AR=arm-linux-ar LD=arm-linux-ld STRIP=arm-转载 2016-09-18 15:01:18 · 4486 阅读 · 0 评论 -
使用 OpenSSL 实现私钥和证书的转换
1私钥总提示输入密码的解决办法:> cp server.key server.key.orgStrip out the password:> openssl rsa -in server.key.org -out server.key[enter the passphrase]2近期在项目中iOS需要用到APNs的推送,而公司的iOS女同事(纯哥)只给了我2转载 2016-09-19 16:36:19 · 14760 阅读 · 0 评论 -
用popen遭遇ENOMEM (Cannot allocate memory)的问题
遇到一个popen遭遇ENOMEM (Cannot allocate memory)的问题,记录一下我需要在程序里获取标准输出的内容,于是在一个模块里使用了popen这个函数,本来一直运行着都没,但是最近这个模块老是出问题,最后定位到是popen调用出错。返回的errno是ENOMEM (Cannot allocate memory),查看popen的文档并没有ENOMEM 相关的转载 2014-05-20 15:31:42 · 4897 阅读 · 0 评论 -
多线程程序问题分析小结
http://csrd.aliapp.com/?p=1799转载 2013-11-06 15:19:12 · 893 阅读 · 0 评论 -
丰田悲剧鸟
http://club.tgfcer.com/thread-6817371-1-1.html转载 2013-11-06 08:58:50 · 1855 阅读 · 0 评论 -
Linux 替换运行中的程序
今天被朋友问及“Linux下可以替换运行中的程序么?”,以前依稀记得Linux下是可以的(而Windows就不让),于是随口答道“OK”。结果朋友发来一个执行结果:(test正在运行中)# cp test2 test cp: cannot create regular file `test': Text file busy看起来是程序被占用,无法覆盖。于是自己又再做了几个实验:转载 2013-02-18 13:18:56 · 718 阅读 · 0 评论 -
Linux下面如何的proc文件--------编写Linux资源管理器
在Linux下面,编写类似的资源管理器,需要读取proc下面的很多文件,为此,搜寻了下面的资料,以利于学习和保存!总之,可以使用命令来读取cat /proc/pid/stat(读取进程信息…………)=============================================================================/proc 是一个伪文件转载 2013-02-18 11:11:26 · 907 阅读 · 0 评论 -
linux下So覆盖导致coredump问题的分析
尝试解答以下问题: 1.为什么cp的方式更新运行中进程的so,程序会coredump 2.采用什么方式更新已经加载了的so,就可以避免coredump 我们的公共组件绝大部分都支持so形式的自定义插件,比如s++,qzhttp,ttc。在不停进程更新so的时候往往会产生coredump,并且肯定core得莫名其妙,core得让人心碎。转载 2013-02-18 13:14:55 · 1748 阅读 · 0 评论 -
Linux 自检和 SystemTap
用于动态内核分析的接口和语言简介: 现代的操作系统内核提供自检 功能,即动态地检查内核以理解其行为的能力。这些行为可以反映内核问题和性能瓶颈。拥有这些信息时候,您就可以调优或修改内核以避免出现故障。本文探索一个名为 SystemTap 的开放源码基础设施,它为 Linux® 内核提供这种动态的自检。System转载 2013-02-21 18:09:20 · 617 阅读 · 0 评论 -
ulimit -t 限制CPU运行时间
今天在内核群里印风同学问了个问题:某台机器的ulimit -t 不知道为啥是300, 这是不是意味着程序占用CPU 300秒后会收到SIGKILL ?我用gdb跑mysqld 跑了一会,收到SIGKILL信号,没有配置cgroup,也没啥后台脚本,看了下,就ulimit -t 比较诡异,其他机器都是unlimited。简单的man ulimit下手册说:-t转载 2013-02-21 18:10:13 · 3361 阅读 · 0 评论 -
内核出的sigkill信号
红帽Linux故障定位技术详解与实例是本文要介绍的内容,主要是来了解并学习红帽linux中故障定位技术的学习,故障定位技术分为在线故障定位和离线故障定位,一起来看详解。 红帽Linux故障定位技术详解与实例是本文要介绍的内容,主要是来了解并学习红帽linux中故障定位技术的学习,故障定位技术分为在线故障定位和离线故障定位,一起来看详解。 1、故障定位(Debug转载 2013-02-22 17:54:42 · 10782 阅读 · 0 评论 -
omap移植systemtap
参考网站:http://omappedia.org/wiki/Systemtaphttp://blog.csdn.net/lzuzhp06/article/details/7778189http://blog.csdn.net/sunnybeike/article/details/7794183http://pastebin.com/Fka5h427http://fosiao.转载 2013-02-28 09:56:13 · 930 阅读 · 0 评论 -
-fpack-struct编译开关的作用
-fpack-struct该编译器选项解决了结构中字节对齐问题。原理和评价: -fpack-struct将所有结构成员无缝隙地压缩在一起。因为它使代码程序效率大大降低,且结构成员的偏移量与系统库不相符,这么做有时可能导致寻址错误,所以一般不使用这个选项。转载 2013-04-16 16:31:09 · 3760 阅读 · 0 评论 -
字符串数组初始化0 与memset 0 效率的分析
最近要分析程序的性能,所以上网查了查资料,的处理下面结论:#defineARRAYSIZE 2048voidmain() { chararrayA[ARRAYSIZE]={0}; chararrayB[ARRAYSIZE]; memset(array,0, ARRAYSIZE);} char arrayA[ARRAY转载 2013-10-09 13:32:49 · 1788 阅读 · 0 评论 -
性能杀手:”潜伏”的memset
【memset性能陷进】memset是大家常用的函数,而且一般的编程书籍都会谆谆告诫大家:申请内存后要初始化,防止使用未经初始化的内存导致不可预知的结果,所以我们一般都会按照如下方式编写代码:char* buffer = (char*)malloc(1024);memset(buffer, 0x00, 1024); 代码看起来很标准,也很美观,但这里却隐藏着一个陷进:memse转载 2013-10-09 13:34:04 · 1342 阅读 · 0 评论 -
linux下so动态库一些不为人知的秘密(上)
linux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名。二者都使用广泛。本文主要讲动态库方面知识。 基本上每一个linux 程序都至少会有一个动态库,查看某个程序使用了那些动态库,使用ldd命令查看 # ldd /bin/lslinux-vdso.so.1 => (0x00007fff597ff000)libsel转载 2013-10-09 15:40:15 · 4868 阅读 · 0 评论 -
编写安全代码——不要用memcmp比较structure
本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。作者:gfree.wind@gmail.com博客:linuxfocus.blog.chinaunix.net 请看下面的代码#include #include转载 2013-10-17 11:37:37 · 878 阅读 · 0 评论 -
C语言的数组初始化
这是很基础的东西,但基础的重要性不言而喻,我敢肯定这个知识点我肯定曾经了解过,但现在,我不敢确定,由此可见纪录的重要性,这世界没有什么捷径,找对方向,然后不停重复.所以从今天开始,我会比较详细的纪录这些比较小的知识点,其实还是有不少有意思的地方的. 写这篇文章的起因在于>第七章新东西太多,看的我目不暇接,所以在网上找了些例子看,其中就有一个例子中出现了这样的语句: ...转载 2013-10-17 22:20:01 · 795 阅读 · 0 评论 -
io优化
1、系统学习IO性能对于一个系统的影响是至关重要的。一个系统经过多项优化以后,瓶颈往往落在数据库;而数据库经过多种优化以后,瓶颈最终会落到IO。而IO性能的发展,明显落后于CPU的发展。Memchached也好,NoSql也好,这些流行技术的背后都在直接或者间接地回避IO瓶颈,从而提高系统性能。 IO系统的分层: 三层结构上图层次比较多,但总的就是三部分。磁盘(转载 2017-03-17 14:35:49 · 561 阅读 · 0 评论