- 浏览: 14642 次
- 性别:
- 来自: 北京
最新评论
文章列表
常见WEB服务器并发策略
- 博客分类:
- Base
一. 一个进程处理一个连接 非阻塞I/O
fork模式,主进程负责accept()客户端的连接,fork一个新的worker进程,出来后进程销毁掉。
prefork模式,主进程预先创建一定数量的子进程,每个请求由一个子进程处理,但是一个子进程可以处理多个请求。父进程只负责管理子进程,根据站点负载来调整子进程的数量,相当维护一个动态子进程。(apache2使用该模式)
二. 一个线程处理一个连接 非阻塞I/O
一个进程中通过多个线程来处理多个连接,一个线程出来一个连接。Apache的work多路处理模块使用该方式,主要目的是解决prefork模式中太多进程的开销,使得支持更多的并发连接。
缺点 ...
基础知识
1. 文件描述符 fd
Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(简称:fd,文件描述符);描述符就是一个数字,指向内核中一个结构体(文件路径,数据区,等一些属性) ; 那么应用程序对文件的读写就通过对描述符的读写完成。
2. 系统调用是如何完成一个I/O操作的呢?
linux将内存分为内核区,用户区; linux内核给我们管理所有的硬件资源,应用程序通过调用系统调用和内核交互,达到使用硬件资源的目的; 应用程序 ...
编写模块,需要实现下面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.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;
...
[转] 好程序需要你写(至少)两遍
- 博客分类:
- code
最近这些年,越来越多的人开始转向敏捷开发。各种敏捷开发技术并不新鲜,大多是在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 ...