- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
【apche的端口和进程】
Apache默认安装完之后监听的是TCP协议的80端口,如果是加密的https协议的话就是443端口。
我们可以通过命令 netstat tupln | grep 80 来查看。
Apache默认会启动一个主进程(也叫控制进程)也多个子进程
我们可以通过命令 ps aux | grep httpd 来查看,默认会启用多个子进程,
这些进程里面有一个主进程,怎么区分呢?
首先,主进程由root运行,其它进程是由apache用户来运行
其次,因为主进程是第一个启动,子进程都是由主进程来运行的,所以我们可以通过
进程的id来判断,主进程的id是最小的
最后我们也可以通过查看 /etc/httpd/run/httpd.pid 文件来查看主进程的id
真正处理请求的是子进程。
【DSO动态加载】
apache本身是一个模块设计的服务,各个的功能,特性是独立分开的,
这样设计的好处在于可扩展很强,各个模块相互依耐性较低,有利于后期的升级或者添加新功能比较方便
核心只包含主要功能,扩展功能通过模块实现。不同模块可以被静态的编译进程序,也可以动态加载DSO 动态共享对象,模块的动态加载就是通过DSO来实现的,动态加载指的是当我们需要新的功能的时候,
我们把需要的功能编译出来,通过配置文件加载进apche的服务当中。不需要重新编译apahce。
通过apache的apxs就可以独立的去编译的动态模块,这个工具是属于httpd-devel开发相关的软件包中的。
可以通过http -M(httpd -l 查看静态模块) 查看当前都编译了哪些模块,其中static为静态编译进apache的,shared为动态编译进入的。
DSO的实现是通过so_module静态模块实现的。 mod_so.c是DSO本身的模块
【MPM 多进程模块】
MPM(Multi Process Modules)
因为apache本身是一个跨平台的,但是不同操作系统,对底层网络请求的处理,操作系统为我们提供的接口都不同。
如果强行使用一种统一的方式去实现,就没有最大化的利用操作系统的最大优势,所以在不同平台下使用不同的MPM
其中Linux下有 prefork 和worker Windows下有 mpm_winnt
Linux下默认的是使用prefork,我们来分析一些prefork与worker的区别
Prefork (预先生成) 是非线程,预生成进程型MPM,prefork会预先启动一些子进程,每个子进程一个时间点只能处理一个请求,并且会根据并发请求数量动态生成更多子进程。优势是线程安全的
Worker worker是线程化,多进程的MPM,每个进程可以生成多个线程,每个线程处理一个请求。优势是不需要启用多个子进程,这样可以节约内存,缺点是效率没有prefork高。
如果要使用其他的MPM需要重新编译Apache。
售前咨询
售后咨询
备案咨询
二维码
TOP