BSD上Apache性能的调整
来源:asp之家 发布时间:2010-05-11 18:17:00
和其他操作系统一样,监听队列(listen queue)是首要限制条件。下面是Aaron Gifford 对BSDI 1.x,2.x和FreeBSD 2.0(包括旧版本)上的建议。
编辑下面两个文件:
/usr/include/sys/socket.h
/usr/src/sys/sys/socket.h
在每个文件中,搜寻:
/*
* Maximum queue length specifiable by listen.
*/
#define SOMAXCONN 5
将5修改为任何可以工作的值即可。经测试调整到32是不会有什么问题的。
修改后,重新编译kernel和Apache Server然后重新启动。
FreeBSD 2.1在SOMAXCONN设置为32时工作的非常好。
附录:BSD服务器在重负载下Apache的性能调整
From Chuck Murcko
如果正运行着一个非常繁忙的BSD Apache服务器并且系统的反应很慢,那么如下工作将很有用处:
运行vmstat检查内存使用情况、page/swap利用率等
运行netstat -m检查mbuf使用情况
运行fstat检查文件描述符使用情况
这些应用提供给你该如何调整kernel的信息以及是否应该增加一些内存。下面是一个有很重负载的BSD服务器的kernel配置参数(实际是BSDI服务器,但是与FreeBSD和4.4-Lite相关),系统其他参数没有变化。
maxusers 256
maxusers对其他kernel参数产生影响:
进程的最大数目
每个用户进程的最大数目
系统打开文件数目限制
每个用户打开文件数目限制
mbuf clusters最大数目
Proc/pgrp hash表大小
这些引申参数的定义公式在/usr/src/sys/conf/param.c中。这些计算出来的参数部分会被kernel配置文建里自己定义的值覆盖:
# Network options. NMBCLUSTERS defines the number of mbuf clusters and
# defaults to 256. This machine is a server that handles lots of traffic,
# so we crank that value.
options NMBCLUSTERS=4096 # mbuf clusters at 4096
#
# Misc. options
#
options CHILD_MAX=512 # maximum number of child processes
options OPEN_MAX=512 # maximum fds (breaks RPC svcs)
在许多情况下,NMBCLUSTERS应该设置的比第一眼看上去需要设置的值大的多。这是因为如果浏览器在传输中中断了连接,与特定连接相关的socket fd要在TIME_WAIT状态等几分钟才释放,在等待时mbuf并没有释放。另外,在服务器的timeouts中,一些连接会停留在FIN_WAIT_2状态,这个状态不会超时,浏览器又不会发出最终的FIN信号。
关于mbuf clusters更多的信息(From sys/mubf.h)
/*
* Mbufs are of a single size, MSIZE (machine/machparam.h), which
* includes overhead. An mbuf may add a single "mbuf cluster" of size
* MCLBYTES (also in machine/machparam.h), which has no additional overhead
* and is used instead of the internal data area; this is done when
* at least MINCLSIZE of data must be stored.
*/
CHILD_MAX和OPEN_MAX设置成允许512个子进程(与每用户最大进程数不同)和文件描述符。这个值可以根据你的特殊配置进行修改(如果你的模块或CGI要打开许多文件时,就设置一个较大的OPEN_MAX)。如果在同一机器上除httpd外还有其他许多工作,就需要设置较大的NPROC。该例中NPROC的值来源于maxusers。
增大listen() queue的大小,需要调整SOMAXCONN的值。SOMAXCONN不是来自于maxusers的。所以需要自己增大这个值。目前,这个值在sys/socket.h中设置。调整这个参数最好的方式时run-time(运行时更改),这要比在头文件中修改要好。要在运行时更改,编辑/etc/rc.local,增加:
/usr/sbin/sysctl -w kern.somaxconn=256
这里使用256,可以进行更改以适合你的需要。许多情况下,设置成128就可以了。
警告:
如果配置的kernel使用的资源超过了你可使用的系统RAM的数量,系统可能不能启动。保证任何时候有一个可以启动系统的kernel。使用一些系统工具了解一下你是否需要增加一些内存。
当OPEN_MAX大于256时,RPC服务会失败。这是由于原始的RPC库的一个函数使用1 byte保存文件描述符导致的。BSDI release 2.1解决了部分问题,但最终的解决需要等待重新设计RPC。
最后还有一个在Apache中对子进程配置的硬限制。
对Apache 1.0.5以后的版本,需要改变httpd.h中HARD_SERVER_LIMIT的定义并重新编译才能运行超过150个httpd进程。
在conf/httpd.conf-dist中:
# Limit on total number of servers running, i.e., limit on the number
# of clients who can simultaneously connect --- if this limit is ever
# reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW.
# It is intended mainly as a brake to keep a runaway server from taking
# Unix with it as it spirals down...
MaxClients 150
在增大这个值之前,要检查一下你的系统,RAM 扩展,并调整kernel。
M. Teterin" 写到:
对kernel和经常使用的应用程序进行优化非常有用。在AMD-133(486类CPU)上重新编译FreeBSD kernel时加上
-m486 -fexpensive-optimizations -fomit-frame-pointer -O2
可以减少 "unable" errors。
Cernet译


猜你喜欢
- 前段时间自己的一个网站进沙盒了,心里很是着急,现在这个网站终于走出google的沙盒了,现在和大家分享下 ,其实对待网站进沙盒如何让网站尽快
- 在2006年6月的美国《连线》杂志上,该杂志的记者Jeff Howe(杰夫.豪)首次推出了众包(Crowdsourcing)的概念,Howe
- 下面是来自可能吧收集整理一份的博客词汇手册, 包括国内外一些常用的博客用词, 博客相关服务, Feed服务网站, 订阅服务网站和
- 前几天分享了新手建站十大免费空间,看那篇文章的朋友基本上都是从免费空间中走出来了,十个免费空间至少有七、八个是曾经用过的。但是自从花钱购买了
- 回顾2007的互联网行业,从一个个鲜活的关键词开始。有的在牛A和牛C之间徘徊,有的还在摸爬滚打,有人脸上挂着泪,有人脸上笑开花,2007年的
- 目前,国内外的SEO都在研究Google排名的因素,据说有三百多种。不过能够把握的无非都是最基本的那几种。只要你能够针对你的网站把以下几方面
- 10月14日下午消息,继数月前推出芒果手机游戏乐园之后,湖南卫视金鹰网又推出“芒果游戏乐园”的网络游
- 网站的基础架构是单纯地建立以内容提供为主的网站,还是附加交流互动的论坛模式?内容提供还分为图片、文字、多媒体影音等类型。在网站的内容之后,是
- 09年的离去,带走了些许忧伤,些许痛楚,或许你还沉浸在那过去的一切一切中,但是,面对2010年的到来,我们应该准备些什么了。今年是不平常的一
- 就像以往的Xbox Live面板升级一样,微软现在开始向公众开放参加X360新功能公开测试的机会。你可以提前体验包括Zune、Faceboo
- 前言对于开发者来说,安装jdk按理说是非常简单的事,但在linux下安装着实费了我这个一直玩windows的小白不少劲。这里简单把步骤梳理下
- 昨日看到Heyi的博客上布满了关键字的链接,而我又对这些链接的分布有一些不同的想法,很早的时候曾经写过谈链接的艺术一文,其中只简单的说明了链
- 假如你在你的托管帐户上存储了archive files,你可能需要unarchive,要么再次使用某个文档,要么只是解压某个你已上传的文件。
- 众所周知的百度将在下个月的一号正式启动凤巢系统,届时已经运行八年的竞价系统将全面下线。那么针对这一举措,百度的大量客户都会受到影响,其自身的
- 网站管理员们经常会面对诸多需要帮助用户重定向到其他页面的情况。不幸的是,对任意目的地开放的重定向很可能被滥用。这是一个防不胜防的滥用形式,因
- 3月1日,百度即时通讯软件百度HI正式内测,百度CEO李彦宏在其博客上呼吁“大家很快就可以一起high了”的博日志,目标直指微软的MSN和腾
- 说实话,我刚开始重新搞91now不知道什么SEO,啥叫SEO?现在我的站被百度收录 185000页,现在日访问量 1W 左右虽然大部分是采集
- Apache是运行在Linux操作系统上的头号Web服务器。很多小地方都可以用来调整Apache的性能,并降低它对系统资源的影响。其中一个就
- 前面我们简单介绍了vmware vSphere 5.0,接下来,我们开始下载安装ESXi 5,下载地址为https://my.vmware.
- PHPWind v7.3.2查看好友最新帖子sql错误解决方法:打开mode/o/m_article.php查找:$where .