- 博客(14)
- 资源 (2)
- 收藏
- 关注
原创 dns lvs webserver
1:dns说到dns,大家可能比较熟悉,都知道是域名解析服务,通俗的讲就是把域名(www.baidu.com)对应到服务器上,这些服务器提供一个或多个ip地址的映射给浏览器等客户端。如果是多个ip地址呢,就相当于在dns层面上做了负载均衡。首先谈谈A记录:A记录实现了DNS的基本功能,就是做域名到ip的映射,(dns系统有linux提供的bind,windows提供的dns)常
2013-08-21 22:51:14 1271
原创 nginx http请求PHASE
当客户端的一个request到达服务器的时候,可以想象一下,一个服务器应该怎么处理这个请求呢?nginx又是怎么处理请求的呢?客户端一个请求到达nginx后,一个worker进程accept后开始处理,首先解析此次请求的请求行(request line),然后处理请求头(request headers),然后再经过http各功能模块,实现对不同请求的特定处理,最后将result返回给客户端。
2013-06-25 18:16:30 1320
原创 nginx 变量
nginx的变量是怎么work的?现在考虑一个需求,要写一个第三方模块,需要一个变量,对应着每个request,这个变量放在哪里呢?怎么获取值,怎么传递给客户端,传给后端服务器呢?那么首先需要了解一下nginx中变量的组织结构,nginx变量可以归为两类:类型1:nginx内部变量 nginx核心变量:ngx_http_core_variables 变量集
2013-06-24 22:59:59 1587
原创 nginx apache lighttpd
对于几大主流服务器,nginx,apache,lighttpd,总是被比较来比较去,下面来说说自己见到的几个应用状况先。1、apache单枪匹马上阵:对于追求服务器性能的大公司,或者流量非常大的产品来说,不可能只用apache。apache稳定,但是因为是多进程同步服务,一个进程对应一个请求,造成其在处理静态资源,大并发请求的时候,hold不住。不能使用长连接。不能防止
2013-06-24 15:47:00 1010
原创 php编译
php编译的参数:路径相关的:--prefix=/ ;--with-config-file-path=/ ;dubg与否:--disable-debug;启动模式相关的:--enable-sockets ;--enable-fastcgi ;功能相关的:--with-mysql= ;--with-curl ; --enable-pcntl;--enable-zip ; --wi
2013-06-21 11:54:30 583
原创 说说php的sapi (cgi fastcgi .etc.)
sapi这是神马?Server Application Programming Interface ,服务器应用编程接口。sapi是应用层(比如apache,nginx,cli .etc)和php交互数据的入口。而就是sapi这个入口,使得php和其上面的应用层解耦合了。sapi实现了和各种应用层的兼容,应用层可以根据自身情况,定制sapi,比如:1)apache2handler和
2013-06-20 18:49:08 2855
原创 nginx的error_log和access_log分析
nginx配置中有关日志的配置主要是围绕着下面两个指令:1、error_log2、access_log:记录访问日志 首先要强调的一点是,如果access日志和error日志都是常量文件名(因为access支持变量文件名,后续会讲到),那么nginx进程会缓存文件描述符直到进程结束。什么时候日志的fd会改变呢?1)进程重启2)收到了NGX_REOPEN_SIGNAL信号,会
2013-06-19 17:07:23 16231
原创 nginx request的几个变量
nginx配置:fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param QUERY_STRING $query_string;fastcgi_param REQUEST_METHOD $request_method;fastcgi_param CONTE
2013-06-13 17:33:31 9045
原创 nginx slab算法
nginx中实现了slab算法,只用在了管理共享内存的时候:static ngx_int_tngx_init_zone_pool(ngx_cycle_t *cycle, ngx_shm_zone_t *zn){ u_char *file; ngx_slab_pool_t *sp; sp = (ngx_slab_pool_t *) z
2013-06-07 16:02:38 1502 2
原创 nginx 进程间通信
进程间通信(IPC)一:父进程与子进程间通信nginx是master-worker服务器模型,master负责接收外部信号,并给子进程发送信号,比如:重启,二进制文件替换等。在这里采用的是高级进程间通信方式:unix域套接字,socketpairnginx细节:子进程只保留自己的channel[1],并把其他子进程的channel[1]给关闭了,避免本进程误
2013-06-06 19:04:28 2402
原创 进程通信:管道(pipe)和socketpair区别
管道pipe是半双工的,pipe两次才能实现全双工,使得代码复杂。socketpair直接就可以实现全双工socketpair对两个文件描述符中的任何一个都可读和可写,而pipe是一个读,一个写详间代码:一:pipe实现父子进程全双工通信:#include #include int main (){ int fd1[2],fd2[2]; pipe(f
2013-06-06 17:50:40 5693
原创 nginx lingering_close
socket属性so_lingerstruct linger {int l_onoff; /* Linger active */int l_linger; /* How long to linger for */};一:close()1:l_onoff = 0;这是close() SO_LINGER属性的默认值
2013-06-04 23:26:30 2847
原创 select和epoll ET和LT
select&&epollselect:1.监听fd数量有限制,受控于fd_set数组大小2.每次select均要重新设置fd_set3.select函数内是通过poll依次轮询fd_set中的fd,4.select后,要依次轮训fd_set,使用FD_ISSET(fd,&fd_set)判断标志位是否置为1,然后进行处理5.需要从内核拷贝到用户空间epoll:
2013-05-22 18:42:36 1040
原创 nginx连接池
nginx连接池:每个进程有自己独立的连接池,连接数配置:worker_connections(当然这个连接数受限于进程ulimit open files ;连接数还包括upstream建立的连接)连接池实际上是一个数组单链表,初始化是在ngx_event_process_init中进行的,包括读写事件链表。连接池(cycle->connections)是分配在连续的n个ngx
2013-05-22 16:03:26 1795
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人