`
doyoueat
  • 浏览: 14642 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
一. 一个进程处理一个连接 非阻塞I/O fork模式,主进程负责accept()客户端的连接,fork一个新的worker进程,出来后进程销毁掉。 prefork模式,主进程预先创建一定数量的子进程,每个请求由一个子进程处理,但是一个子进程可以处理多个请求。父进程只负责管理子进程,根据站点负载来调整子进程的数量,相当维护一个动态子进程。(apache2使用该模式) 二. 一个线程处理一个连接 非阻塞I/O 一个进程中通过多个线程来处理多个连接,一个线程出来一个连接。Apache的work多路处理模块使用该方式,主要目的是解决prefork模式中太多进程的开销,使得支持更多的并发连接。 缺点 ...

I/O模型

    博客分类:
  • Base
基础知识 1. 文件描述符 fd Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(简称:fd,文件描述符);描述符就是一个数字,指向内核中一个结构体(文件路径,数据区,等一些属性) ; 那么应用程序对文件的读写就通过对描述符的读写完成。 2. 系统调用是如何完成一个I/O操作的呢? linux将内存分为内核区,用户区; linux内核给我们管理所有的硬件资源,应用程序通过调用系统调用和内核交互,达到使用硬件资源的目的; 应用程序 ...

nginx 模块组成

编写模块,需要实现下面5个部分 定义 ngx_module_t 模块结构体 定义commands 定义cxn 实现commands里对应的实现函数 实现handler函数 (command实现函数依赖handler函数)  (这个才是真正干活的) 说明各个函数部分的意义 commands eg: static ngx_command_t ngx_echo_commands[] = { { ngx_string("echo"), //指令名称 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, ...

Nginx模块如何调试

ngx 
编写nginx.conf,将nginx设置为单进程调试模式 worker_processes 1; error_log logs/error.log debug; # 记录调试日志 master_process off; # 单进程模式 daemon off; pid /tmp/nginx_debug.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; ...
  最近这些年,越来越多的人开始转向敏捷开发。各种敏捷开发技术并不新鲜,大多是在80 和90年代发展形成。但只是在最近这些年,程序员和(更重要的是)一些商业顾问,架构师,客户开始变得喜欢和拥抱敏捷开发。 进化 ...
image_filter 配合 proxy_pass && proxy_cache 动态切图。 server { listen 80; server_name img.doyoueat.com; location ~* ^/resize/w_(\d+)/h_(\d+)/(.*)$ { rewrite /resize/w_(\d+)/h_(\d+)/(.*)$ /$3?w=$1&h=$2 break; proxy_set_header Host $host; proxy_se ...
1.什么是正向代理和正向代理服务器?       正向代理就是通常所说的代理,是某台电脑通过一台服务器来上Internet网的这种方式,其中这台电脑就叫客户机,这台服务器就叫正向代理服务器也就是通常所说的代理服务器。在 ...
Global site tag (gtag.js) - Google Analytics