Apache 是一款开源 Web 服务器软件,在Web服务器(如Apache HTTP Server)和软件开发中,高度模块化、DSO(Dynamic Shared Object)和MPM(Multi-Processing Module)是几个关键概念,它们对于提升系统的灵活性、可扩展性和性能至关重要。下面是对这些概念的详细解释:
高度模块化指的是软件或系统被设计成由多个独立的、可互换的模块组成。这些模块可以独立开发、测试和维护,而不需要修改其他模块的代码。在Web服务器(如Apache)的上下文中,这通常意味着服务器核心(core)提供基本的服务和框架,而特定的功能则通过加载额外的模块(modules)来实现。
这种模块化设计的好处包括:
动态加载/卸载,DSO(Dynamic Shared Object)是一种在Unix-like系统上使用的动态链接库格式。在Web服务器的上下文中,DSO允许服务器在运行时动态地加载和卸载模块,而不需要重启服务器。这意味着可以在不中断服务的情况下更新或替换模块,提高了系统的可用性和灵活性。
DSO模块通常以.so(在Linux和类Unix系统上)或.dylib(在MacOS上)为文件扩展名。使用DSO模块,管理员可以根据需要动态地调整服务器的功能,以适应不同的流量模式和用户需求。
多路处理模块,MPM(Multi-Processing Module)是Apache HTTP Server中用于处理并发连接的一种机制。
Apache HTTP Server支持多种MPM模型,以适应不同的操作系统和硬件配置。这些模型决定了服务器如何创建和管理工作进程(或线程)来处理客户端请求。
常见的MPM模型包括:


缺点:没有线程安全控制, 进程之间的 切换问题
选择哪种MPM模型取决于服务器的硬件配置、预期的负载以及管理员的偏好。MPM的设计使得Apache HTTP Server能够灵活地适应不同的应用场景,从而提供高性能和可靠的服务。
版本
httpd-2.4:event 稳定版,centos7 以后默认
httpd-2.2:event 测试版,centos6 默认
| 错误代码 | 错误描述 | 故障问题分析 |
|---|---|---|
| 403 | Forbidden(禁止访问该页面) | ①权限设置不正确②IP地址限制(访问控制:防火墙规则)③身份验证(如登录用户检查) |
| 404 | Not Found(服务器无法找到被请求的页面) | ①URL路径错误②资源被删除或移动 |
| 500 | Internal Server Error(内部服务器错误) | ①程序错误(服务端应用程序bug,检查服务端程序日志进行修复)②数据库问题(查询失败或连接资源耗尽)③服务器配置(服务端配置文件不正确,更新服务器版本也可能导致) |
| 502 | Bad Gateway(无效网关) | ①后端服务器出现故障(检查上游服务器健康状态:响应)②代理服务器设置问题(查看配置或网络是否不可达导致不能转发到后端地址) |
| 503 | Service Unavailable(当前服务不可用) | ①服务器过载(服务器占用率100%,网络流量过大)②服务临时维护:不提供服务(要做网页说明) |
| 504 | Gateway Timeout(网关请求超时) | ①后端服务响应延迟(上游服务器响应时间和可用性)②网络问题(分析网络连接、路由器是否有故障或瓶颈,是否因网络调整导致超时) |
①静态页面是指在请求时,页面内容不会再服务端生成或处理,而是直接返回给客户端展示的页面。
通常情况下,这种页面的内容是固定的,随着时间推移不会发生任何变化,比如公司的主页或者产品介绍页面等。
②动态页面则是需要在服务端进行一些处理,才能生成最终页面的网页。
在请求时,服务端会根据用户的请求或者一些其他条件动态地生成网页内容,再将最终的页面返回给客户端。
动态页面和静态页面不同,它们能够根据数据变化实时更新页面展示内容,比如购物网站的商品列表页面
格式
wget [OPTION]... [URL]...
常用选项
- -q 静默模式
- -c 断点续传
- -P /path 保存在指定目录
- -O filename 保存为指定文件名,filename 为 - 时,发送至标准输出
- --limit-rate= 指定传输速率,单位K,M等
curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法, FTP上 传, kerberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证, 下载文件断点续传,上载 文件断点续传, http代理服务器管道( proxy tunneling),还支持IPv6,socks5代理服务器,通过http 代理服务器上传文件到FTP服务器等,功能十分强大
curl [options] [URL...] 模拟 一些 操作
-
- -A/--user-agent
设置用户代理发送给服务器 - -e/--referer
来源网址 - --cacert
CA证书 (SSL) -
- -k/--insecure 允许忽略证书进行 SSL 连接
- --compressed 要求返回是压缩的格式
- -H/--header "key:value” 自定义首部字段传递给服务器
- -i 显示页面内容,包括报文首部信
- -I/--head 只显示响应报文首部信息
- -D/--dump-header
将url的header信息存放在指定文件中 - --basic 使用HTTP基本认证
- -u/--user
设置服务器的用户和密码 - -L 如果有3xx响应码,重新发请求到新位置
- -O 使用URL中默认的文件名保存文件到本地
- -o
将网络文件保存为指定的文件中 - --limit-rate
设置传输速度 - -0/--http1.0 数字0,使用HTTP 1.0
- -v/--verbose 更详细
- -C 选项可对文件使用断点续传功能
- -c/--cookie-jar
将url中cookie存放在指定文件中 - -x/--proxy
指定代理服务器地址 - -X/--request
向服务器发送指定请求方法 - -U/--proxy-user
代理服务器用户和密码 - -T 选项可将指定的本地文件上传到FTP服务器上
- --data/-d 方式指定使用POST方式传递数据
- -s --silent Silent mode-b name=data 从服务器响应set-cookie得到值,返回给服务器
- -w
显示相应的指定的报文信息,如:%{http_code},%{remote_ip}等 - -m, --max-time
curl www.163.com -vA chrome
冒充 chrome 浏览器
获取状态码
curl -s -I -m10 -o /dev/null -w %{http_code} http://www.baidu.com/
服务器地址
curl -s -I -m10 -o /dev/null -w "%{remote_ip}\n" http://www.bnaidu.com
端口local_port
httpd的压力测试工具:
ab 来自httpd-tools包,所以需要
yum -y install httpd-tools
测试安装是否成功:ab -V
命令格式
ab [OPTIONS] URL
选项
n:总请求数 -c:模拟的并发数 -k:以持久连接模式测试
模拟10个用户,对百度首页发起1000次请求
ab -c 10 -n 1000 http://192.168.88.79/index.php
在压测时候会显示被压测服务器的版本号

结果分析
- Server Software: Apache #服务器软件
- Server Hostname: json.im #域名
- Server Port: 80 #请求端口号
-
- Document Path: / #文件路径
- Document Length: 40888 bytes #页面字节数
-
- Concurrency Level: 10 #请求的并发数
- Time taken for tests: 27.300 seconds #总访问时间
- Complete requests: 1000 #请求成功数量
- Failed requests: 0 #请求失败数量
- Write errors: 0
- Total transferred: 41054242 bytes #请求总数据大小(包括header头信息)
- HTML transferred: 40888000 bytes #html页面实际总字节数
- Requests per second: 36.63 [#/sec] (mean) #每秒多少请求,这个是非常重要的参数数值,服务器的吞吐量
- Time per request: 272.998 [ms] (mean) #用户平均请求等待时间
- Time per request: 27.300 [ms] (mean, across all concurrent requests)
- # 服务器平均处理时间,也就是服务器吞吐量的倒数
- Transfer rate: 1468.58 [Kbytes/sec] received #每秒获取的数据长度
-
- Connection Times (ms)
- min mean[+/-sd] median max
- Connect: 43 47 2.4 47 53
- Processing: 189 224 40.7 215 895
- Waiting: 102 128 38.6 118 794
- Total: 233 270 41.3 263 945
-
- Percentage of the requests served within a certain time (ms)
- 50% 263 #50%用户请求在263ms内返回
- 66% 271 #66%用户请求在271ms内返回
- 75% 279 #75%用户请求在279ms内返回
- 80% 285 #80%用户请求在285ms内返回
- 90% 303 #90%用户请求在303ms内返回
- 95% 320 #95%用户请求在320ms内返回
- 98% 341 #98%用户请求在341ms内返回
- 99% 373 #99%用户请求在373ms内返回
- 100% 945 (longest request)