首页 > 网站 > Apache > 正文

BSD上Apache性能的调整(3)

2024-08-27 18:25:54
字体:
来源:转载
供稿:网友
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。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表