5月 262012
 

为什么服务器在连续运行多天后或访问峰值后,进程中的一个Apache.exe占用内存几百兆不减少?
用记事本打开apache2\conf\httpd.conf,
我在centos5上 httpd.conf在 /etc/httpd/conf/目录下。
查找MaxRequestsPerChild,将MaxRequestsPerChild 0改成MaxRequestsPerChild 50即可。 Continue reading »

9月 262008
 

我在一个行业应用软件中,因为业务需求(监控页面)使用ajax定时刷新技术,由于该页面长期运行,导致内存暴增,3天apache.exe,就占用近2G,通过google和百度的搜索,发现影响apache内存性能的主要有一下几个参数:

ThreadsPerChild
MaxRequestsPerChild
————-
KeepAlive
MaxKeepAliveRequests
KeepAliveTimeout

参数简单介绍如下: Continue reading »

9月 122008
 

ZDNet 服务器频道 更新时间:2008-08-18

  几天前在某QQ群,有人和笔者讨论起来,为什么有的服务器主板可以使用普通内存,而有些服务器主板插入普通内存根本就点不亮,我想这个问题也是很多初级DIY服务器朋友的疑惑之处,趁着这次机会,就详细的说明一下。

  我们都知道,在INTEL平台,北桥负责与CPU的联系,并控制内存、AGP、PCI数据在北桥内部传输。基本上只要主板芯片组确定,那么其支持的内存类型也就确定了。在介绍主板的时候,我们已经说过,INTEL芯片组划分的很清楚,865PE属于工作站级别芯片组,不支持ECC内存,只能使用普通内存,875P芯片组属于低端服务器/工作站级别,支持ECC内存和普通非ECC内存,而E7525属于高端服务器,为了保证其稳定性,必须采用ECC REG内存,使用其他内存无法点亮。在AMD方面,K8 CPU集成了内存控制器,CPU与内存直接交换数据,不通过北桥。939针的ALTHON 64系列不支持ECC,所以只能用普通内存,939针的OPTERON支持ECC内存和普通非ECC内存,940针的OPTERON系列只能使用ECC REG内存,插入普通内存无法点亮。

  普通内存 ECC内存与 REG ECC内存有什么不同?

  普通内存大家经常接触,DDR400的内存现在遍地都是,很多高档内存甚至可以运行DDR600/DDR2 800,而有些内存也可以达到2-2-2-5这样低的延迟,因为大家接触的比较多,这里就暂不作介绍了。 反观ECC和REG ECC内存不追求高频率和低延迟,INTLE平台内存运行频率一般在DDR333或者是DDR2 400,,AMD平台内存运行频率在DDR400,延时也多在4-4-4-8左右,从性能上看丝毫不占优势,但是稳定才是其立足的根本。图为DDR2 ECC内存。这里我们常说的ECC内存就是单指的 Unbuffer ECC,其价格和普通内存相比只贵10%-20%,从外观来说,Unbuffer ECC内存因为要满足效验纠错的需要,加入了一颗ECC效验颗粒,由于采用的是TOSP封装,使得内存看上去每面有9颗内存颗粒。 Continue reading »

9月 112008
 

菜雨博客

今天买伞回来之后发现我放blog的虚拟机又出问题了,windows2003显示虚拟内存不足。于是我登录进去看,其他同样设置的机器原来都是一直好好的,为什么就是这个不行,而且这样的情况出现的不止一次了。重启,进入系统,非常慢,打开任务管理器,发现Apache的进程httpd.exe的内存占用竟然到了400多M,而且还在不停增加,难怪了。重启之后,现象一样,httpd.exe占用的内存不断增加,直到把机器拖垮。

上网搜索,很多的还是说是因为配置的原因,说是要将 httpd.conf 中的 Threadsperchild 和MaxRequestsPerchild做合适的配置。ThreadsPerChild的意思是系统启动时默认启动的等待线程数,用来等待处理客户的请求,MaxRequestsPerchild 指令设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。根据很多人的经验,一般的服务器2G内存或4G内存,ThreadsPerChild 200~300,MaxRequestsPerchild 1000~3000。我用的是虚拟机,只划了512M内存过去,我不停的修改参数设置,大致知道了占用的最大内存会是Threadsperchild的3-4倍。我最后给自己的虚拟机的设置是Threadsperchild 50 ,MaxRequestsPerchild 256 。暂时还是有用的,但是长久我就不知道了,我看到很多人还是没有用的,又有说法是这个是Apache 2.2.4及其之下的一个bug。很不幸,我用的是APMSERV的集成包,Apache是2.2.3。我刚刚在发布上篇日志的时候就看到了内存又飙到了200多M。我的直觉告诉我服务器的这个问题肯定和wordpress有关,或者是它的一个插件或者主题引起的,另外一个CMS是DEDE,基本都静态页,应该没什么问题的。但是我现在很崩溃,这么细致的试还真没有时间。 Continue reading »

4月 292007
 

Front Side Bus,简写为FSB,前端总线

什么是前端总线?不是超频的方法之一,也不是用来超频的。

我们知道,电脑有许多配件,配件不同,速度也就不同。在286、386和早期的486电脑里,CPU的速度不是太高,和内存保持一样的速度。后来随着CPU速度的飞速提升,内存由于电气结构关系,无法象CPU那样提升很高的速度(就算现在内存达到400、533,但跟CPU的几个G的速度相比,根本就不是一个级别的),于是造成了内存和CPU之间出现了速度差异,这时就提出一个CPU的主频、倍频和外频的概念,外频顾名思义就是CPU外部的频率,也就是内存的频率,CPU以这个频率来与内存联系。CPU的主频就是CPU内部的实际运算速度,主频肯定是比外频高的,高一定的倍数,这个数就是倍频。举个例子,你从电脑垃圾堆里拣到一个被抛弃的INTEL 486 CPU,上面印着486 DX/2 66。这个486的CPU的主频是66MHZ,DX/2代表是2倍频的,于是算出CPU的外频是33MZ,也就是内存的工作频率,这同时也是前端总线 FSB的频率。因为CPU是通过前端总线来与内存发生联系的,所以内存的工作频率(或者说外频也行)就是前端总线的频率。刚才这个垃圾堆里的486 CPU,前端总线的频率就是33MZ。这样的前端总线结构一直延续到486之后的奔腾(俗话说的586)、奔腾2、奔腾3,例如一颗奔3 933MHZ的CPU,外频133,也就是说它的前端总线是133MHZ,内存工作频率也是133。 Continue reading »