apache几个重要概念和处理应对状态码的一些方法

一、apache几个重要概念

Apache 是一款开源 Web 服务器软件,在Web服务器(如Apache HTTP Server)和软件开发中,高度模块化DSO(Dynamic Shared Object)MPM(Multi-Processing Module)是几个关键概念,它们对于提升系统的灵活性、可扩展性和性能至关重要。下面是对这些概念的详细解释:

1.1、高度模块化:core + modules

高度模块化指的是软件或系统被设计成由多个独立的、可互换的模块组成。这些模块可以独立开发、测试和维护,而不需要修改其他模块的代码。在Web服务器(如Apache)的上下文中,这通常意味着服务器核心(core)提供基本的服务和框架,而特定的功能则通过加载额外的模块(modules)来实现。

  • Core(核心):提供基本的服务器功能和API,供模块调用。它负责处理网络请求、管理进程、内存和线程等。
  • Modules(模块):是可插拔的代码块,用于扩展服务器的功能。例如,有的模块负责处理特定的请求类型(如CGI、PHP),有的模块用于认证和授权,还有的模块提供缓存功能等。

这种模块化设计的好处包括:

  • 灵活性:可以根据需要启用或禁用模块,以适应不同的应用场景。
  • 可扩展性:容易添加新的功能,只需开发相应的模块即可。
  • 可维护性:各个模块相对独立,便于单独测试和修复问题。

1.2、DSO(Dynamic Shared Object)

动态加载/卸载,DSO(Dynamic Shared Object)是一种在Unix-like系统上使用的动态链接库格式。在Web服务器的上下文中,DSO允许服务器在运行时动态地加载和卸载模块,而不需要重启服务器。这意味着可以在不中断服务的情况下更新或替换模块,提高了系统的可用性和灵活性。

DSO模块通常以.so(在Linux和类Unix系统上)或.dylib(在MacOS上)为文件扩展名。使用DSO模块,管理员可以根据需要动态地调整服务器的功能,以适应不同的流量模式和用户需求。

1.3、MPM(Multi-Processing Module)

多路处理模块,MPM(Multi-Processing Module)是Apache HTTP Server中用于处理并发连接的一种机制。

Apache HTTP Server支持多种MPM模型,以适应不同的操作系统和硬件配置。这些模型决定了服务器如何创建和管理工作进程(或线程)来处理客户端请求。

常见的MPM模型包括:

  • prefork:为每个连接创建一个单独的进程。适用于处理大量并发连接,但内存占用较高。
  • worker:使用多进程和多线程混合模型。每个进程可以处理多个线程,减少了进程创建的开销,提高了效率。
  • event:专为高并发环境设计,使用了一种更高效的线程管理机制,能够处理更多的并发连接。

缺点:没有线程安全控制, 进程之间的 切换问题

选择哪种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(网关请求超时) ①后端服务响应延迟(上游服务器响应时间和可用性)②网络问题(分析网络连接、路由器是否有故障或瓶颈,是否因网络调整导致超时)

2.1、请简单描述下静态页面和动态页面

①静态页面是指在请求时,页面内容不会再服务端生成或处理,而是直接返回给客户端展示的页面。

通常情况下,这种页面的内容是固定的,随着时间推移不会发生任何变化,比如公司的主页或者产品介绍页面等。

②动态页面则是需要在服务端进行一些处理,才能生成最终页面的网页。

在请求时,服务端会根据用户的请求或者一些其他条件动态地生成网页内容,再将最终的页面返回给客户端。

动态页面和静态页面不同,它们能够根据数据变化实时更新页面展示内容,比如购物网站的商品列表页面

**三、**Wget相关工具(以及扩展curl)

格式

wget [OPTION]... [URL]...

常用选项

bash 复制代码
-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...] 模拟 一些 操作

bash 复制代码
-A/--user-agent <string> 设置用户代理发送给服务器
-e/--referer <URL> 来源网址
--cacert <file> CA证书 (SSL)

-k/--insecure   允许忽略证书进行 SSL 连接
--compressed 要求返回是压缩的格式
-H/--header "key:value" 自定义首部字段传递给服务器
-i 显示页面内容,包括报文首部信

-I/--head 只显示响应报文首部信息
-D/--dump-header <file>将url的header信息存放在指定文件中
--basic 使用HTTP基本认证
-u/--user <user[:password]>设置服务器的用户和密码


-L   如果有3xx响应码,重新发请求到新位置
-O 使用URL中默认的文件名保存文件到本地
-o <file> 将网络文件保存为指定的文件中
--limit-rate <rate> 设置传输速度

-0/--http1.0 数字0,使用HTTP 1.0
-v/--verbose 更详细
-C 选项可对文件使用断点续传功能
-c/--cookie-jar <file name> 将url中cookie存放在指定文件中
-x/--proxy <proxyhost[:port]> 指定代理服务器地址


-X/--request <command> 向服务器发送指定请求方法
-U/--proxy-user <user:password> 代理服务器用户和密码
-T 选项可将指定的本地文件上传到FTP服务器上
--data/-d 方式指定使用POST方式传递数据
-s --silent   Silent mode-b name=data 从服务器响应set-cookie得到值,返回给服务器
-w <format> 显示相应的指定的报文信息,如:%{http_code},%{remote_ip}等
-m, --max-time <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, webbench, http_load, seige
  • Jmeter 开源
  • Loadrunner 商业,有相关认证
  • tcpcopy:网易,复制生产环境中的真实请求,并将之保存

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

在压测时候会显示被压测服务器的版本号

结果分析

bash 复制代码
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)
相关推荐
花姐夫Jun12 分钟前
在 CentOS 8 系统上安装 Jenkins 的全过程
linux·centos·jenkins
运维&陈同学19 分钟前
【Beats01】企业级日志分析系统ELK之Metricbeat与Heartbeat 监控
运维·elk·elasticsearch·云原生·kibana·heartbeat·metricbeat
地球资源数据云21 分钟前
全国30米分辨率逐年植被覆盖度(FVC)数据集
大数据·运维·服务器·数据库·均值算法
是店小二呀29 分钟前
【Linux】Linux开发利器:make与Makefile自动化构建详解
linux·运维·自动化
‘’林花谢了春红‘’1 小时前
计算机网络习题(第5章 网络层 第6章 传输层)
网络·计算机网络
哎呦不错哦.1 小时前
简单园区网拓扑实验
网络·智能路由器
baihb10241 小时前
Jenkins 构建流水线
运维·jenkins
BUG 4041 小时前
LINUX--shell
linux·运维·服务器
菜鸟小白:长岛icetea1 小时前
Linux零基础速成篇一(理论+实操)
linux·运维·服务器
深海的鲸同学 luvi1 小时前
【HarmonyOS NEXT】hdc环境变量配置
linux·windows·harmonyos