Interview 01
Apache和Nginx区别
工作模式
Apache工作模式:
prefork模式:多个子进程,每个子进程只有一个线程。每个
进程
在确定的时间只能维持一个连接,所以一个进程只能处理一个请求。工作原理:控制进程在最初创建若干个子进程。为了不在请求来临时再生成子进程,所以需要根据需求不断的创建新进程,最大可以达到每秒32个,直到满足需求。
优点: 效率高、稳定,进程之间完全独立,无须担心线程安全的问题。 缺点: 相比worker模式消耗资源更多。
worker模式:多个子进程,每个子进程同时有多个线程。每个
线程
在确定的时间只能维持一个连接,所以一个进程可以处理多个请求。工作原理:控制进程生成若干个子进程,每个子进程包含固定的线程数。为了不在请求到来时再生成线程,在配置文件中设置了最小和最大的空闲子进程的线程总数。如果现有子进程的线程总数不能满足并发和负载,控制进程会派生新的子进程。
优点:内存占用比prefork模式低,适合高并发高流量HTTP服务。 缺点:假如一个线程崩溃,整个进程就会连同其任何线程一起“挂掉”,由于线程共享内存空间,所以一个程式在运行时必须被系统识别为"每个线程都是安全的"。服务稳定性不如prefork模式。在keep-alive长连接的方式下,某个线程会被一直占用,即使中间没有请求,也需要等待到超时才会被释放。
event模式:同worker模式,但解决了在keep-alive模式下,线程被长期占用直到超时,从而导致资源浪费的问题。
在event模块中,有一个专门的线程来管理这些keep-alive类型的线程,当接收到真实的请求时,会将请求传递给服务线程,执行完毕后,会将对应的服务线程释放,这样就能实现线程的异步非阻塞。
Nginx工作模式:
master进程:
管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。
充当整个进程组与用户的交互接口,同时对进程进行监护。它不需要处理网络事件,不负责业务的执行,只会通过管理worker进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。
worker进程:
多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。
一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。
worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致。
采用了异步非阻塞的方式。
重写
Apache:支持在目录级别上控制服务器配置,每个目录都能够配置自己的 .htaccess 文件。
Nginx:不支持目录级别的重写。
LVS和Nginx的负载区别
K8S的基础模块
Etcd,kubeadmin,kubeproxy,kubectl。
后续准备学习(:sob:,学过忘),记录成markdown。
Python的列表和字典的遍历
# 定义列表
list=[1, 2, 3, 4, 5]
# 定义字典
dict={“a”:1, “b”:2}
# 遍历列表
for i in list:
print(i)
# 遍历字典
# dict.keys()遍历key
# dict.values()遍历value
for key, value in dict.items():
print(key, value)
Python WEB框架
Apache worker/prefork模式说明和优化配置
httpd的运行模式prefork、worker、event
Last updated
Was this helpful?