荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: georgehill (小美), 信区: Linux
标 题: Web Server Tuning
发信站: BBS 荔园晨风站 (Tue Nov 9 12:52:43 1999), 转信
Web Server Tuning
Servers
Apache
Homepage: apache.org
Tuning: the Apache performance tuning guide by Dean Gaudet
{Min,Max}SpareServers, MaxClients
As you may know, Apache uses a separate process for every
concurrent connection and each of those processes is reused
for a (large) number of connections before a new one is
forked. This causes the interesting phenomenon that Apache
can use a lot of memory during peak loads and shrink again
during quiet periods.
You have to make sure that there are more Apache processes
than simultaneous users, otherwise people will have to wait a
bit or they can't get a connection to the server at all.
Note, however, that it doesn't make sense to set MaxClients
higher than your machine can properly support, otherwise your
whole machine will go down the drain and nobody will get
decent performance... If you increase it above 256, you'll
have to increase the HARD_SERVER_LIMIT in include/httpd.h or
add -DHARD_SERVER_LIMIT=xxx to CFLAGS in Configuration.
You'll also want to add gobs of memory to your box and make
sure that you actually have enough network bandwidth to serve
all those users, but that's another story :) Very very very
high performance people probably want to take a look at Dan
Kegel's C10K page.
The {Min,Max}SpareServers settings are a whole other story.
When your machine is only a webserver and it gets a lot of
hits, you might want to leave around a decent number of extra
servers so there'll be a server ready whenever somebody makes
a request. Reasonable figures for a highly loaded machine
would be 3 to 8 minimum and 5 to 15 maximum. If you need more
than that, you're probably already aware of it :)
When your machine is also doing a lot of other things and you
get less than 100.000 hits a day, then you probably want to
have only 1 (one) MinSpareServers and 2 or 3 MaxSpareServers.
This means that Apache will leave more memory for other
programs and disk cache, leading to better overall system
performance.
Limits
MaxRequestsPerChild should be set high, to something like
10000, unless you're running server-side modules which suffer
from memory leaks.
Disable Unused Modules
If you don't plan on using dynamically loaded modules you can
add -DDYNAMIC_MODULE_LIMIT=0 to the CFLAGS.
Turn Off Expensive Options
Anywhere you have AllowOverride set means the server will
check for the presence of a .htaccess file. For example, if
you have AllowOverride set, and the webserver access a file
in /usr/local/apache/htdocs/private-area/ Apache will check
/usr, /usr/local, /usr/local/apache, etc. So, don't use
.htaccess files if you want high performance. You can set
AuthUserFile (and associated Auth directives) in the
httpd.conf file instead.
HostNameLookups is off by default. Leave it that way, unless
it's really important. Otherwise, you'll be doing a reverse
lookup on every client.
ExtendedStatus is off by default. Again, leave it that way,
unless it's really important for you to have timing stats for
your site.
FollowSymLinks and SymLinksIfOwnerMatch both slow your system
down, by causing the webserver to check ownership and
filetype for each component in the path, so disable them.
Use Efficient Server-side scripting
If you do a lot of CGI, consider using mod_perl. The
Apache::Registry module can in most cases speed up your CGI
requests with no actual changes to your code. Plus, you can
do a whole lot more with mod_perl (like using handlers
instead of CGI, which can be far faster than CGI). See
http://perl.apache.org for more details.
Take advantage of kernel features
If you're running a Linux kernel that supports wake-one
semantics for accept(), configure Apache to take advantage of
that, e.g.
env CFLAGS='-DSINGLE_LISTEN_UNSERIALIZED_ACCEPT' ./configure
See also http://www.kegel.com/mindcraft_redux.html#tips and
http://home.att.net/~jageorge/performance.html#Apache for
more tips.
OS Tweaks
As of this writing (Jun 3 1999), the best kernel to run on
Intel systems is 2.2.9 (plus the 2.2.9_andrea3 patch for SMP
machines). See http://www.kegel.com/mindcraft_redux.html for
more tips.
Limits
The 2.2 kernel lets you tune some limits at runtime. For
example,
echo 32768 > /proc/sys/fs/file-max
echo 65536 > /proc/sys/fs/inode-max
Other limits are harder to change. For example, to increase
the number of tasks allowed, you may need to edit
include/linux/tasks.h and rebuild the kernel. (One person
recommended changing NR_TASKS from 512 to 2048, and changing
MIN_TASKS_LEFT_FOR_ROOT to 24.)
--
磨难,是上苍给我最宝贵的财富!
感谢上苍!
我是来自大富翁的小美!^_^
※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.115]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店