Jan6

nginx中有关进程的概念

Author: leeon  Click: 9515   Comments: 0 Category: 操作系统  Tag: 进程,nginx

Nginx是采用master进程 + 多个worker进程 +多路复用I/O事件处理器的架构


Master进程:
 创建监听socket
 创建worker子进程,之后的主要动作就是监控子进程的工作状态

Worker进程的主循环:
 更新当前时间
 查看当前监听的事件是否被触发,如有调用相应的处理函数进行处理
 处理超时连接

master负责创建监听套接字,同时也是worker的父进程
master进程直接控制worker进程 worker进程不受客户干预
master进程监控worker子进程之外,还处理客户的控制指令,统一由它分发给worker子进程

worker进程的负载均衡问题:
由于各个worker进程之间相互独立,由内核协议栈统一将接收的新连接分发给各个worker子进程进行处理,很可能出现有些子进程处理的连接多,有些处理的少----即负载不均衡
Nginx中,子进程每次接收一个新连接,会根据当前该进程的连接数量,更新一个阙值,由这个阙值决定是否该暂缓接收的连接 这样,各个子进程之间有一个相对的均衡Nginx中还对accept操作做了加锁,任意时刻只可能有一个子进程可以接收新的连接,避免惊群现象的出现。

Jan5

lighttpd(lighty) 性能优化

Author: fcicq  Click: 8097   Comments: 0 Category: 优化  Tag: lighttpd,lighty

1 最大连接数

默认是1024
修改 server.max-fds,大流量网站推荐2048.

因为lighttpd基于线程,而apache(MPM-prefork)基于子进程,
所以apache需要设置startservers,maxclients等,这里不需要

2 stat() 缓存

stat() 这样的系统调用,开销也是相当明显的.
缓存能够节约时间和环境切换次数(context switches)

一句话,lighttpd.conf加上
server.stat-cache-engine = “fam”

lighttpd还另外提供simple(缓存1秒内的stat()),disabled选项.
相信没人会选disabled吧.

3 常连接(HTTP Keep-Alive)

一般来说,一个系统能够打开的文件个数是有限制的(文件描述符限制)
常连接占用文件描述符,对非并发的访问没有什么意义.

(文件描述符的数量和许多原因有关,比如日志文件数量,并发数目等)

这是lighttpd在keep-alive方面的默认值.
server.max-keep-alive-requests = 128
server.max-keep-alive-idle = 30

换言之,lighttpd最多可以同时承受30秒长的常连接,每个连接最多请求128个文件.
但这个默认值确实不适合非并发这种多数情况.

lighttpd.conf 中减小
server.max-keep-alive-requests
server.max-keep-alive-idle
两个值,可以减缓这种现象.

甚至可以关闭lighttpd keep-alive.
server.max-keep-alive-requests = 0

4 事件处理

对于linux kernel 2.6来说,没有别的可说
lighttpd.conf中加上这一句足矣
server.event-handler = “linux-sysepoll”

另外,
linux 2.4 使用 linux-rtsig
solaris: solaris-devpoll
freebsd 使用 freebsd-kqueue
unix 使用 poll

5 网络处理

lighttpd 大量使用了 sendfile() 这样一个高效的系统调用.
减少了从应用程序到网卡间的距离.
(同时也减少了lighttpd对cpu的占用,这部分占用转嫁到内核身上了)

根据平台,可以设置不同的参数.
(linux) server.network-backend = “linux-sendfile”
solaris: solaris-sendfilev
freebsd: freebsd-sendfile
unix: writev

Jan5

php 文章第一篇

Author: leeon  Click: 8448   Comments: 0 Category: php  Tag: php
php文章第一篇
Jan5

c/c++第一篇文章

Author: leeon  Click: 4852   Comments: 0 Category: c/c++  Tag:
c/c++第一篇文章

分类

标签

归档

最新评论

Abyss在00:04:28评论了
Linux中ramdisk,tmpfs,ramfs的介绍与性能测试
shallwe99在10:21:17评论了
【原创】如何在微信小程序开发中正确的使用vant ui组件
默一在09:04:53评论了
Berkeley DB 由浅入深【转自架构师杨建】
Memory在14:09:22评论了
【原创】最佳PHP框架选择(phalcon,yaf,laravel,thinkphp,yii)
leo在17:57:04评论了
shell中使用while循环ssh的注意事项

我看过的书

链接

其他

访问本站种子 本站平均热度:9360 c° 本站链接数:1 个 本站标签数:464 个 本站被评论次数:94 次