Linux基础知识点(十一)

此篇博客只是记录第十三周未掌握或不熟悉的知识点,用来加深印象。

一、Apache 工作模式解析

  1. prefork(多进程,每个进程产生子进程)和 worker(多进程,每个进程生成多个线程)
    prefork 的工作原理:控制进程在最初建立“StartServers”个子进程后,为了满足 MinSpareServers 设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟, 继续创建四个……如此按指数级增加创建的进程数,最多达到每秒 32 个,直到满足 MinSpareServers 设置的值为止,这就是预派生(prefork)的由来,这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能
    worker 是 2.0 版中全新的支持多线程和多进程混合模型的 MPM,由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器。但是, worker 也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性,这种 MPM 的工作方式将是 Apache 2.0 的发展趋势。
    event 是时间驱动模型(worker 模型的变种),一个主进程,生成 m 个子进程,每个进程直接响应 n 个请求,即 m * n,有专门的线程来管理这些 keep-alive 类型的线程,当有真实请求时,将请求传递给服务线程,执行完毕后,又允许释放,这样增强了高并发场景下的请求处理能力
  2. 查看 apache 当前所支持的模块以及工作在哪种模式下
    httpd -l 可以查看 apache 当前的模块
    如果带有 worker.c 就是工作在 worker 模式下,如果有 prefork.c 就是工作在 prefork.c 的模式下
  3. 假设 Apache 产生的日志文件名为 access_log,在 apache 正在运行时,执行命令 mv  access_log access_log.bak,执行完后,请问新的 apache 的日志会打印到哪里,为什么?
    新的日志会打印在 access_log.bak 中,因为 apache 启动时会找到 access_log 文件, 随时准备向文件中加入日志信息, 虽然此时文件被改名,但是由于服务正在运行,因为它的 inode 节点的位置没有变,程序 打开的 fd 仍然会指向原来那个 inode, 不会因为文件名的改变而改变。apache 会继续向已改名的文件中追加日志,但是若重启 apache 服务,系统会检查 access_log是否存在,若不存在则创建。

二、Apache 安装及配置

  1. MIME(Multipurpose Internet Mail Extensions):多用途互联网邮件扩展 /etc/mime.types。即支持的文件类型
  2. 提高 HTTP 连接性能
            并行连接:通过多条 TCP 连接发起并发的 HTTP 请求
            持久连接:keep-alive,长连接,重用 TCP 连接,以消除连接和关闭的时延,以事物个数和时间来决定是否关闭连接
            管道化连接:通过共享 TCP 连接发起并发的 HTTP 请求
            复用的连接:交替传送请求和响应报文(实验阶段)
  3. URI(Uniform Resource Identifier):统一资源标识,分为 URL(Uniform Resource Locator)统一资源定位符 和 URN(Uniform Resource Naming)统一资源命名
    URN 如同一个人的名称,URL 代表一个人的住址
  4. 统计服务器应用的市场占有率:www.netcraft.com
         统计网站的 UV 和 PV:http://www.alexa.cn/rank/
  5. CentOS 6 程序环境:yum install httpd -y (默认是 2.2)
    配置文件:/etc/httpd/conf/httpd.conf      /etc/httpd/conf.d/*.conf
    检查配置语法:httpd -t    service httpd configtest
    服务脚本:/etc/rc.d/init.d/httpd
    脚本配置文件:/etc/sysconfig/httpd
    服务控制和启动:chkconfig httpd on|off     service {start|stop|restart|status|configtest|reload} httpd
    站点网页文档根目录:/var/www/html
    模块文件路径:/etc/httpd/modules        /usr/lib64/httpd/modules
    主程序文件:/usr/sbin/httpd     /usr/sbin/httpd.worker      /usr/sbin/httpd.event
    主进程文件:/etc/httpd/run/httpd.pid
    日志文件:/var/log/httpd/access_log(访问日志) /var/log/httpd/error_log(错误日志)
    帮助文档包:httpd-manual    /etc/httpd/conf.d/manual.conf
  6. 常见配置
    ServerTokens Prod[uctOnly]        Server:Apache  (建议使用)
                           Major                     Server:Apache/2
                           Minor                     Server:Apache/2.0
                           Min[imal]                Server:Apache/2.0.41
                           OS                           Server:Apache/2.0.41(Unix)
                           Full                          Server:Apache/2.0.41(Unix) PHP/4.2.2 MyMod/1.2
    KeepAlive On|Off    是否开启持久连接,默认是 15s
    MPM  httpd-2.2  不支持同时编译多个模块,所以只能编译时选定一个,确认方法:ps aux | grep httpd
            CentOS 7 更改MPM模式,vim /etc/httpd/conf.modules.d/00-mpm.conf
            httpd -l         查看静态编译的模块
            httpd -M       查看静态编译及动态装载的模块(动态模块路径  /usr/lib64/httpd/modules)
    DSO(Dynamic Shared Object)   动态模块加载,在配置文件中 LoadModule <mod_name> <md_path>

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/100144

发表评论

登录后才能评论

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班