2013年4月6日

摘要: 以下转载自http://tengine.taobao.org/book/chapter_06.html#core-40Nginx是多进程程序,80端口是各进程所共享的,多进程同时listen 80端口,势必会产生竞争,也产生了所谓的“惊群”效应。当内核accept一个连接时,会唤醒所有等待中的进程,但实际上只有一个进程能获取连接,其他的进程都是被无效唤醒的。所以Nginx采用了自有的一套accept加锁机制,避免多个进程同时调用accept。Nginx多进程的锁在底层默认是通过CPU自旋锁来实现。如果操作系统不支持自旋锁,就采用文件锁。Nginx事件处理的入口函数是ngx_process_ev 阅读全文
posted @ 2013-04-06 23:10 flowly 阅读(1851) 评论(0) 推荐(0) 编辑
摘要: 看nginx源码中看到Async-Signal-Safe Function的定义查了下。csapp中也报告了一个Async-Signal-Safe 的问题:http://csapp.cs.cmu.edu/public/waside/waside-safety.pdf先上定义吧,POSIX对它们的定义分别是:Reentrant FunctionA function whose effect, when called by two or more threads, is guaranteed to be as if the threads each executed the function on 阅读全文
posted @ 2013-04-06 19:14 flowly 阅读(200) 评论(0) 推荐(0) 编辑
摘要: nginx启动之后,调用ngx_strerror_init对error进行了初始化。nginx重新定义strerror的原因是:/** The strerror() messages are copied because:** 1) strerror() and strerror_r() functions are not Async-Signal-Safe,* therefore, they cannot be used in signal handlers;** 2) a direct sys_errlist[] array may be used instead of these fun 阅读全文
posted @ 2013-04-06 18:52 flowly 阅读(254) 评论(0) 推荐(0) 编辑
摘要: nginx是多进程的架构,由master进程和多个worker进程组成。master进程和worker进程之间用信号进行通信。nginx默认是以后台进程的形式运行的。系统管理员通过信号与master进程通信进而与worker进程通信。同一个请求只会在一个worker进程之间进行处理。worker进程的数目是可以通过配置文件改变的。一般worker进程的数目设置为cpu的核数。进程越多并不代表性能越高,因为操作系统在管理多进程的时候还需要进程的上下文切换,这个也是有时间消耗的。1、nginx的信号处理kill -HUP pid用于告诉nginx,从容地重启nginx,我们一般用这个信号来重启ng 阅读全文
posted @ 2013-04-06 18:20 flowly 阅读(523) 评论(0) 推荐(0) 编辑
摘要: http://collab.kpsn.org/display/tc/Files%3A+DBC#TrinityCoreTrinityCore HomeFiles: DBCSkip to end of metadataAdded byKing Pin, last edited byNaydon Jan 12, 2013(view change)Go to start of metadataThis is some DBC file description and content for small onesT- Used by TrinityCore.Achievement.dbcAchievem 阅读全文
posted @ 2013-04-06 17:46 flowly 阅读(414) 评论(0) 推荐(0) 编辑

导航