程序环境:
httpd 2.2(Centos 6)
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
服务脚本:
/etc/rc.d/init.d/httpd
服务脚本会使用的配置文件: /etc/sysconfig/httpd
主程序文件:
/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
日志文件目录:
/var/log/httpd
access_log: 访问日志
error_log: 错误日志
站点文档目录:
/var/www/html
模块文件路径:
/usr/lib64/httpd/modules
MPM特性(Multipath Processing Modules):
prefork:多进程模型,每个进程响应一个请求
一个主进程,负责生成n个子进程(被称为工作进程),每个子进程处理一个请求,即使没有请求,也会预先生成多个空闲进程以随时等待请求到达,最大不会超过1024个,即并发量最大为1024个
worker:多线程模型,每个线程响应一个请求
一个主进程,生成多个子进程,每个子进程负责生成多个线程,每个线程响应一个请求
例:m子进程,每个进程生成n线程,总共有m*n个线程处理请求
event:事件驱动模型,每个线程响应n个请求
一个主进程,生成m个子进程,每个进程响应n个请求
注:
httpd-2.2中,event为测试使用
httpd-2.4中,event可生产使用
prefork
worker
修改工作模式
vim /etc/sysconfig/httpd
持久连接
配置参数:
测试方法:
1. 未开启持久连接
telnet 192.168.1.101 80
GET / HTTP/1.1
Host: 192.168.1.101
2. 开启持久连接
telnet 192.168.1.101 80
GET / HTTP/1.1
Host: 192.168.1.101
副作用:
一个进程维护一个持久连接,对并发访问量较大的服务器,打开持久连接功能后,进程无法及时释放,会使有些请求得不到响应,必须排队
推荐配置:
限制一个持久连接的请求数量,并限制较短的持久连接时间(如2秒),在httpd-2.4中,支持毫秒级持久时间
定义‘Main’ server的文档页面路径:
使用路径别名 Alias:
效果:
设定默认字符集
模块相关
httpd -l //查看静态编译的模块
httpd -M //查看所有已加载的模块
日志相关:
错误日志
ErrorLog logs/error_log
LogLevel warn
访问日志(可分别给不同的虚拟机指定不同的访问日志):
CustomLog logs/access_logcombined
%h 客户端IP地址
%l Remote logname(from identd,if supplied). -表示为空
%u Remoteuser, (from auth;may be bogus if return status (%s) is 401)
%t 服务器收到请求的时间
%r Firstline of request,请求报文的道行信息(包含methodurl version)
%>s 响应状态码
%b 响应报文的大小,单位是字节,不包括响应报文首部
%{Referer}i 表示当前资源的访问入口,即从哪个页面跳转而来。-表示直接输入url访问
%{User-Agent}i 使用什么应用程序发送的请求(如浏览器)
详情:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats