我希望获得一些关于 Apache 最佳设置的专家建议。
目前我们的网站按以下方式运作。
- 用户请求具有低分辨率图像的页面。
- 页面加载很快,然后 javascript 将会延迟加载。
- 调用Ajax来实现不同的功能。
某些页面可能有该用户的 30 个请求。
正在使用的服务器是
- 双四核 Xeon 处理器
- 8GB 内存
- SSD硬盘
- 使用Mysql。
- 红帽
当前 Apache 设置是
KeepAlive on
MaxKeepAliveRequests 100
KeepAliveTimeout 15
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
我认为应该启用 keepalive,但超时应设置为 1 秒。任何想法都将不胜感激。
#httpd -V
Server version: Apache/2.2.15 (Unix)
Server built: Feb 7 2012 09:50:11
Server's Module Magic Number: 20051115:24
Server loaded: APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
答案1
测试、测试、测试、再测试。
抓取一些不错的负载生成器(不,ab
是不是适合的)如 siege、jperf、flood 或 tsung,建立一个基线,然后开始使用不同组合的请求和繁忙度进行加载。
很明显,您不知道 apache 当前是如何配置的,因为任何时候都只使用一个 MPM;在 2.4 之前,这实际上是编译好的,安装后无法更改。
首先,弄清楚什么当前配置实际上是;用结果更新您的帖子httpd -V
,我们可以提供进一步的帮助。