apache配置优化测试

apache配置优化测试

apache配置优化测试
一、apache安装
1、先解压缩tar文件
复制内容到剪贴板
代码:
    tar -zxvf httpd-2.0.58.tar.gz
    ./configure --prefix=/usr/local/apache2test --enable-so --enable-shared=max --with-mpm=worker\
    --enable-deflate --enable-headers --enable-rewrite --enable-proxy --enable-proxy --enable-ssl \
    --with-ssl=/path/to/install/openssl_0.97i --enable-modules=all
    && make && make install
注:这是正式服务器上的apache2的编译参数,其中--with-mpm=worker --with-ssl=/path/to/install/openssl_0.97i
        可以根据实际情况做出修改。
2、安装 php,并且在/usr/local/apache2test/conf目录下的httpd.conf里面的DSO支持之后加入
        AddType application/x-httpd-php .php .p html .html .htm
        AddType application/x-httpd-php-source .phps
    最后将测试的php网页文件添加到/usr/local/apache2test/htdocs目录下。
   
3、测试工具说明以及安装
    1)、ab是Apache超文本传输协议(HTTP)的性能测试工具。 其设计意图是描绘当前所安装的Apache的执行性能,主要是显示
        你安装的Apache每秒可以处理多少个请求;
        概要:运行/usr/local/apache-install-path/bin/ab -help查看ab的具体命令选项;
    命令选项-c concurrency 一次产生的请求个数。默认是一次一个。
    -n requests 在测试会话中所执行的请求个数。 默认时,仅执行一个请求,但通常其结果不具有代表意义

        运行结果:主要要注意的是以下内容
        Time taken for tests: 总共执行所花费的时间.(以上 1000 次共多久)
        Requests per second:  每秒平均可以处理多少个connection.
        备注:每次仅仅能针对一个连接做重复的测试。
   
    2)、Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点
        进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
    下载/安装
    Siege时一个开放源代码项目,可以在 http://www.google.com上查找
    备注:最好选择2.5以上版本,因为高版本多包括一个辅助工具,能够做增量压力测试,低版本不包括此工具。
    安装:
    %./configure --prefix=/path/to/install && make && make install
   
    siege使用说明:
        在/path/to/install/bin/目录下创建需要测试的链接文件,如 www.test.com.url,添加需要的测试的链接
         http://10.5.3.122/test/google.php/
         http://10.5.3.122/test/baidu.php/
         http://10.5.3.122/test/sogou.php/
    然后保存。
    siege使用样例:
        siege -c 20 -r 2 -f www.chedong.com.url
        参数说明:
        -c 20 并发20个用户
        -r 2 重复循环2次
        -f www.test.com.url 任务列表:URL列表
复制内容到剪贴板
代码:
输出样例:
** Siege 2.59
** Preparing 20 concurrent users for battle. 这次“战斗”准备了20个并发用户
The server is now under siege.. done. 服务在“围攻”测试中:
Transactions: 40 hits 完成40次处理
Availability: 100.00 % 成功率
Elapsed time: 7.67 secs 总共用时
Data transferred: 877340 bytes 共数据传输:877340字节
Response time: 1.65 secs 相应用时1.65秒:显示网络连接的速度
Transaction rate: 5.22 trans/sec 平均每秒完成5.22次处理:表示服务器后台处理的速度
Throughput: 114385.92 bytes/sec 平均每秒传送数据:114385.92字节
Concurrency: 8.59 最高并发数 8.59
Successful transactions: 40 成功处理次数
Failed transactions: 0 失败处理次数
bombardment使用样例:
         bombardment www.test.com.url 5 3 4 1
        初始化URL列表: www.test.com.url
        初始化为:5个用户
        每次增加:3个用户
        运行:4次
        每个客户端之间的延迟为:1秒
        输出样例和siege一致,但是会在每一次增量结束之后都有输出。
   
4、测试方法说明
    测试步骤:
    方法1.安装apache2后,直接使用apache2的默认设置配置,不做任何修改,进行测试;
    方法2.按照以前文档提出的Web容量规划和内存的大小,计算出相应的启动进程数,配置httpd.conf文件,再进行测试;
复制内容到剪贴板
代码:
ServerLimit 400
StartServers 20
MinSpareServers 20
MaxSpareServers 50
MaxClients 300
MaxRequestsPerChild 10000
方法3.超过极限设置,进行测试。(规划容量的2倍进行)
复制内容到剪贴板
代码:
1000个链接,分为不同的并发数请求,10、50、100、200、300、500
ab测试:
/usr/local/apache2.53/bin/ab -n 1000 -c 10 http://10.5.3.122/test/google.php/
/usr/local/apache2.53/bin/ab -n 1000 -c 50 http://10.5.3.122/test/google.php/
/usr/local/apache2.53/bin/ab -n 1000 -c 100 http://10.5.3.122/test/google.php/
/usr/local/apache2.53/bin/ab -n 1000 -c 200 http://10.5.3.122/test/google.php/
/usr/local/apache2.53/bin/ab -n 1000 -c 300 http://10.5.3.122/test/google.php/
/usr/local/apache2.53/bin/ab -n 1000 -c 500 http://10.5.3.122/test/google.php/
siege测试:
/usr/local/siege/bin/siege -c 10 -r 100 -f www.test.com.url
/usr/local/siege/bin/siege -c 50 -r 20 -f www.test.com.url
/usr/local/siege/bin/siege -c 100 -r 10 -f www.test.com.url
/usr/local/siege/bin/siege -c 200 -r 5 -f www.test.com.url
/usr/local/siege/bin/siege -c 300 -r 3 -f www.test.com.url
/usr/local/siege/bin/siege -c 500 -r 2 -f www.test.com.url
增量测试:
/usr/local/siege/bin/bombardment www.test.com.url 1 100 5 1
/usr/local/siege/bin/bombardment www.test.com.url 1 100 6 1
5、测试结果总结
    ab测试:测试并发连接数在50~500的情况下,方法2比方法1性能略有提升,但是相差在10个并发连接数左右, 并且方法1方法2在测试并发数100的情况下,实际并发数都相差无几。
    siege测试:测试并发数从50之后直到500,性能都有提升,并且在测试并发数100、200、500的情况下,提升相差10~30个实际并发数。
    bombardment测试:相差不大。
   本次测试的结果不太理想,性能的变化不显著,也不明显,可以所属于失败的测试结果。
   分析原因:
   1.本身硬件配置不高,所以默认设置和修改后的设置变化不明显,对性能的提升也明显不足;
   2.负载情况太少,由于系统性能原因,增量测试都不能过大的进行,系统性能load average过高;
   3.测试页面程序也太少,没有太大说服力。
<think>好的,用户想要了解关于Nginx和Apache配置优化以及常见的面试问题。首先,我需要明确用户的需求。他们可能正在准备面试,或者希望优化自己的服务器配置。需要分两部分来回答:配置优化和面试问题。 首先,配置优化方面,对于Nginx和Apache,我得回忆两者的主要优化点。Nginx通常以高性能著称,处理高并发能力强,而Apache在动态内容处理上更灵活。用户可能想知道如何调整参数来提升性能,比如工作进程、连接数、缓存设置等。 对于Nginx的优化,可能需要提到worker_processes和worker_connections的设置,使用epoll模型,开启gzip压缩,调整缓冲区大小,以及静态资源缓存。此外,负载均衡和反向代理的配置也是常见优化点。 Apache方面,MPM模块的选择很重要,prefork和worker的不同适用场景。调整MaxRequestWorkers,保持连接KeepAlive,启用压缩模块mod_deflate,同样需要设置缓存头。还有关闭不必要的模块来减少资源消耗。 常见配置误区方面,用户可能错误地设置并发数,或者同时使用两种服务器导致端口冲突。需要提醒他们避免这些错误。 面试问题部分,要区分Nginx和Apache的特性对比,比如事件驱动与进程/线程模型。常见问题包括反向代理配置、负载均衡算法、动静分离的实现,以及性能调优的参数。对于Apache,可能会问KeepAlive的优化,MPM模块的选择,如何限制请求大小等。 用户可能还希望知道如何在实际项目中应用这些优化,比如如何根据服务器硬件调整进程数,或者如何通过压测工具测试配置效果。需要确保回答覆盖理论和实践,帮助用户全面准备。 另外,要检查是否有遗漏的重要优化点,比如SSL配置优化、日志优化(比如关闭access_log或使用缓冲),以及安全相关的配置,比如防止DDoS攻击的限制连接数设置。 最后,组织信息时要结构清晰,分点列出,方便用户阅读和理解。确保使用正确的中文术语,避免翻译错误,比如“工作进程”对应worker processes,“连接数”对应worker connections等。同时,注意区分Nginx和Apache的不同配置方法,避免混淆。</think>以下为Nginx和Apache配置优化及常见面试问题总结,分三个部分呈现: --- ### 一、Nginx配置优化核心要点 1. **进程模型优化** ```nginx worker_processes auto; # 根据CPU核心数自动分配 worker_rlimit_nofile 65535; # 单个进程最大打开文件数 events { use epoll; # Linux系统高性能事件模型 worker_connections 4096; # 每个worker最大连接数 } ``` 2. **缓冲区优化** ```nginx client_body_buffer_size 16K; client_header_buffer_size 1k; client_max_body_size 10m; # 限制上传文件大小 ``` 3. **高效传输配置** ```nginx gzip on; # 开启压缩 gzip_min_length 1k; gzip_comp_level 3; keepalive_timeout 65; # 保持长连接 ``` 4. **静态资源缓存** ```nginx location ~* \.(jpg|css|js)$ { expires 30d; # 客户端缓存30天 add_header Cache-Control "public"; } ``` --- ### 二、Apache配置优化核心要点 1. **MPM模块选择** ```apache # prefork模式(PHP场景) <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 256 # 最大并发连接数 </IfModule> ``` 2. **连接保持优化** ```apache KeepAlive On KeepAliveTimeout 5 MaxKeepAliveRequests 100 ``` 3. **模块管理** ```apache LoadModule deflate_module modules/mod_deflate.so # 开启压缩 # 禁用无用模块:mod_negotiation, mod_status等 ``` --- ### 三、高频面试问题 #### Nginx相关问题 1. 解释Nginx如何处理10万并发连接? ✅ 答案:通过异步非阻塞事件驱动模型,少量worker进程复用连接 2. 如何实现Nginx动静分离? ✅ 示例配置: ```nginx location ~ \.php$ { proxy_pass http://backend; } location /static/ { root /data/www; } ``` #### Apache相关问题 1. prefork和worker模式区别? ✅ prefork:多进程+阻塞IO,稳定性高 ✅ worker:多进程+多线程,内存占用低 2. 如何优化Apache的KeepAlive参数? ✅ 公式参考: `KeepAliveTimeout = 平均请求处理时间 × 2` `MaxKeepAliveRequests = 总内存 / 单个进程内存消耗` --- #### 典型优化误区 - ❌ 盲目设置worker_processes为CPU核数(需考虑I/O密集型场景) - ❌ 同时启用Nginx和Apache的gzip压缩(会导致重复压缩) - ❌ 未设置client_max_body_size导致大文件上传失败 建议通过`ab`或`wrk`工具进行压测验证配置效果,关注Requests/sec和内存占用指标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值